我有一个服务器,它在端口8181上创建一个套接字。我想从谷歌Chrome 14打开的网页访问该套接字。我想直截了当是不可能的。Chrome提供对Web Sockets的支持,但不支持标准socket。对吗?
是否有可能以某种方式创建一个中介,将我的套接字服务器监听端口8181作为运行在其他端口上的web套接字服务器?
websockify是一个通用的WebSockets到TCP socket的代理/桥接。我创建websockify最初是为了允许noVNC (HTML5 VNC客户端)能够连接到未打补丁的VNC服务器。但它一般是有用的(不是特定于VNC),所以我把它作为一个单独的项目。
在UNIX/Linux系统上,你可以这样运行websockify:
./websockify 8080 my_server:8181
上面示例中的8080端口是侦听WebSocket连接的端口。my_server是服务器监听端口8181的系统的名称/IP。如果你在同一个系统上运行websockify,那么你可以使用localhost
来代替'my_server'。
websockify项目还附带了一个名为websock.js的Javascript包装库。websockify支持新的协议版本(Chrome 14+和Firefox 6+使用),但它也可以与旧版本一起使用。然而,在旧版本的协议中没有办法发送原始二进制数据(只有UTF-8),所以websock.js和websockify在使用旧协议时一起工作以base64编码/解码数据(在浏览器和websockify之间),以便您仍然可以向目标发送原始二进制数据。