websocket用于二进制数据传输&解码

时间:2010-09-27 17:10:24

标签: html5 standards w3c websocket

我正在阅读规范和许多关于websockets使用的例子。几乎所有人都使用websockets讨论UTF-8或ascii消息传输。

最新的Hybi websocket规范要求支持二进制传输。 REQ 6 in hybi spec

我也读过某个地方,铬支持hybi。但最新版Chrome 7.0仅在pywebsocket配置中选择draft-hixie时才有效。

是否有任何浏览器支持hybi规范?即使它是开发者,也可以。

1 个答案:

答案 0 :(得分:7)

在WebSockets中支持非UTF-8(即二进制)编码可能需要一段时间。

我建议在客户端和服务器上使用base64编码/解码。所有支持WebSockets的浏览器都有window.atob(base64 decode)和window.btoa(base64编码)。您可能编写WebSockets服务器的大多数语言都有base64库(即python中的base64模块)。

如果您想要传输二进制数据,您可能会对noVNC附带的wsproxy感兴趣,这是一个基于Web的VNC客户端。 wsproxy(有一个C和python版本)是一个通用TCP套接字代理的WebSockets。它base64对来自浏览器的所有流量进行编码/解码。您可以使用它从支持WebSockets的浏览器连接到任何类型的TCP端口。

注意,noVNC有一个base64编码/解码的Javascript实现,因为信不信由你,Javascript版本比atob / btoa略快。

免责声明:我创建了noVNC。