/ / Connectez-vous à un socket standard à l'aide de WebSocket - javascript, html5, google-chrome, websocket

Connectez-vous à un socket standard à l'aide de WebSocket - javascript, html5, google-chrome, websocket

J'ai une interface client avec un périphérique matérielqui communique sur un socket TCP standard. Est-il possible de se connecter à cela en utilisant WebSocket dans un navigateur comme Chrome? Voici le code que j’utilise pour me connecter:

var ws = new WebSocket("ws://127.0.0.1:13854");
ws.onopen = function() ...

Le client échoue jusqu'à présent sur la première ligne. Le problème que WebSockets utilise son propre protocole avec lequel un socket local standard ne serait pas familier? J'ai essayé de spécifier d'autres protocoles ("http: // ..." et "tcp: // ..."), mais cela n'a pas fonctionné.

Réponses:

7 pour la réponse № 1

Comme thejh déjà expliqué, WebSockets ne transmet pas de donnéescomme vous le fournissez, mais ajoutez le cadrage et le masquage au flux de données. Il n’est donc pas possible d’utiliser des websockets pour communiquer avec des applications qui n’implémentent pas le protocole WebSocket.

Mais il existe une solution de contournement: A Websockify serveur peut être utilisé comme proxy pour relier unclient websocket et un serveur non-websocket. Le client ne communique pas directement avec l'application, mais avec un serveur websockify. Websockify décompresse le flux de données Websocket et le relaie sur le serveur. La réponse du serveur est ensuite compressée dans des cadres WebSocket et envoyée au client.


3 pour la réponse № 2

Les Web Sockets utilisent un protocole spécial. Par exemple, toute connexion websocket démarre en tant que connexion HTTP et est remplacée par une connexion websocket une fois que les deux parties ont accepté de passer au protocole Websocket via HTTP. "Vous ne pouvez pas parler à des serveurs TCP arbitraires à l'aide de websockets, désolé. Si vous voulez faire quelque chose comme ça, vous devrez probablement utiliser flash ou un applet Java.