我正在阅读有关使用Websockets的规范和许多示例.几乎所有的人都谈论使用Websockets的UTF-8或ascii消息传输.
最新的Hybi Websocket规范要求支持二进制传输. REQ 6 in hybi spec
另外我读到某个地方,chrome支持hybi.但最新版本Chrome 7.0仅在pywebsocket配置中选择了draft-hixie时才起作用.
是否有任何浏览器支持hybi规格?即使它是开发,它的确定.
解决方法
在WebSockets中支持非UTF-8(即二进制)编码可能会有一段时间.
我建议在客户端和服务器上使用base64编码/解码.所有支持WebSockets的浏览器都有window.atob(base64 decode)和window.btoa(base64 encode).大多数语言你可以编写一个WebSockets服务器,具有base64库(即python中的base64模块).
如果您想要传输二进制数据,那么可能在wsproxy中有趣的是noVNC,它是一个基于Web的VNC客户端. wsproxy(有一个C和python版本)是一个WebSockets到通用的TCP套接字代理.它base64对所有来往浏览器的流量进行编码/解码.您可以使用它从支持WebSockets的浏览器连接到任何类型的TCP端口.
注意,noVNC有一个基于base64编码/解码的Javascript实现,因为它信不信由,Javascript版本比atob / btoa稍快.
免责声明:我创建了noVNC.