Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Connect to standard socket using WebSocket

I have a client interface to a hardware device that communicates over a standard TCP socket. Is it possible to connect to this using WebSocket in a browser like Chrome? Here's the code I am using to connect:

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

The client just fails so far on the first line. Is the problem that WebSockets use their own protocol which a standard local socket would be unfamiliar with? I have tried specifying other protocols ('http://...' and 'tcp://...') but this has not worked.

like image 906
RonanOD Avatar asked Mar 29 '13 14:03

RonanOD


1 Answers

As thejh already explained, WebSockets don't transmit data as you provide it, but add framing and masking to the data stream. Thus it is not possible to use websockets to communicate with applications which don't implement the WebSocket protocol.

But there is a workaround: A Websockify server can be used as a proxy to bridge between a websocket client and a non-websocket server. The client doesn't communicate with the application directly, but with a websockify server instead. Websockify unpacks the Websocket data stream and relays it to the server. The response from the server is then packed into WebSocket frames and sent to the client.

like image 93
Philipp Avatar answered Sep 22 '22 17:09

Philipp