使用WebSocket连接到标准套接字

时间:2013-03-29 14:15:53

标签: javascript html5 google-chrome websocket

我有一个通过标准TCP套接字进行通信的硬件设备的客户端接口。是否可以在Chrome浏览器中使用WebSocket连接到此?这是我用来连接的代码:

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

到目前为止,客户端在第一行失败了。问题是WebSockets使用自己的标准本地套接字不熟悉的协议吗?我已经尝试过指定其他协议('http:// ...'和'tcp:// ...'),但这没有用。

2 个答案:

答案 0 :(得分:7)

正如thejh已经解释过的那样,WebSockets不会像您提供的那样传输数据,而是为数据流添加成帧和屏蔽。因此,不可能使用websockets与未实现WebSocket协议的应用程序进行通信。

但是有一种解决方法:Websockify服务器可以用作代理来桥接websocket客户端和非websocket服务器。客户端不直接与应用程序通信,而是使用websockify服务器。 Websockify解压缩Websocket数据流并将其中继到服务器。然后将服务器的响应打包到WebSocket框架中并发送给客户端。

答案 1 :(得分:3)

Web套接字使用特殊协议。例如,任何websocket连接都作为HTTP连接启动,并在双方同意通过HTTP更改为websocket协议后更改为websocket连接。抱歉,您无法使用websockets与任意TCP服务器通信。如果你想做类似的事情,你可能不得不使用flash或Java applet。