J'ai une webapp écrite en ReactJS.

Et ce que j'essaie de faire, c'est de communiquer avec un socket TCP normal qui fonctionne sur localhost. (L'appareil qui écoute les requêtes est un terminal Eftpos). Je souhaite donc envoyer des commandes d'achat et en recevoir des réponses.

Comment puis-je communiquer avec le socket TCP normal depuis ma webapp? D'après ce que je comprends, je ne peux pas simplement communiquer avec le socket TCP à partir de l'application Web. Étant donné que les webapps ne prennent en charge que les WebSockets qui sont différents. Quelle autre manière?

-1
Nipoon Patel 28 août 2020 à 05:59

2 réponses

Meilleure réponse

Javascript dans un navigateur peut faire http, webSocket et webRTC. Le navigateur Javascript (sans les modules complémentaires personnalisés qui contiennent leur propre code natif) ne peut pas faire une connexion TCP simple.

Si vous souhaitez vous connecter à quelque chose qui nécessite une connexion TCP simple, vous devez vous connecter à votre serveur en utilisant http ou webSocket et que votre serveur se connecte au socket TCP normal et votre serveur peut traduire entre eux. Ceci est souvent appelé proxy.

Donc, pour les besoins de cette explication, imaginons que vous vouliez vous connecter à un service qui utilise un socket TCP simple et que vous deviez lui envoyer des lignes de texte et obtenir des lignes de texte en réponse. Votre client doit choisir entre http ou webSocket pour le transport du navigateur vers votre serveur, alors imaginons que vous utilisez webSocket. La séquence des événements pourrait ressembler à ceci:

  1. Le client navigateur se connecte à votre serveur avec un webSocket.
  2. Votre serveur reçoit une connexion webSocket entrante et comme il sait qu'il agira en tant que proxy pour un serveur qui utilise un socket TCP ordinaire, il ouvre ce socket au nom de cet utilisateur.
  3. Le client navigateur envoie la première requête via webSocket.
  4. Votre serveur reçoit cette première requête et la traduit dans le format requis pour le socket TCP et l'envoie sur le socket TCP.
  5. Lorsque votre serveur reçoit une réponse du socket TCP, il traduit cette réponse en un paquet webSocket et le renvoie au client.
  6. Le client reçoit la réponse sur sa connexion webSocket.
  7. Répétez aussi longtemps que vous le souhaitez.
  8. Lorsque le client ferme la connexion webSocket, le serveur ferme la connexion TCP avec un autre serveur.
1
jfriend00 28 août 2020 à 08:39

Le seul moyen est de créer un proxy côté serveur de données.

Vous pouvez établir cette connexion TCP côté serveur et relayer les données via une connexion Websocket vers le client navigateur.

1
Brad 28 août 2020 à 03:02