Websockets和二进制数据

据我所知websockets支持二进制数据传输。 二进制支持错误已修复 。

那么,有没有支持二进制数据传输的websocket服务器? Socket.io似乎错过了这个机会。 也许还有其他一些?

在WebSocket服务器中支持二进制数据非常简单(实际上UTF-8的工作量较less)。 真正的问题是在浏览器中支持二进制数据types。 目前正在开发中,但目前还没有支持发送和接收二进制types的浏览器发布(types化数组,blob)。

如果您现在需要在浏览器添加支持之前发送二进制数据,您可以尝试我的websockify python服务器和Javascript客户端库。 它使用base64编码通过线路传输二进制数据。 它不使用types化数组/ blob,而是使用数字(0-255)数组来表示Javascript侧的二进制数据。

一些链接:

  • Mozilla的bug#666349
  • WebKit错误#65249 (关于二进制数据支持的部分现在都是固定的)
  • W3C WebSockets API
  • IETF HyBi WebSockets协议v10

下面是WebSockets实现(浏览器,客户端,服务器)的一个比较,它具有“二进制消息”的function行:

http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations

目前(09/16/2011),支持二进制WS消息的浏览器是:

  • Chrome 15或更高版本
  • IE10(Windows 8开发人员预览的一部分)
  • Firefox 11或更高版本

有关详细的testing报告和浏览器比较,请参阅:

http://autobahn.ws/testsuite/