Websockify错误“客户端必须支持'二进制'或'base64'协议”

时间:2013-04-12 03:02:56

标签: websocket

我正在尝试使用websockify来允许在浏览器中执行的javascript与我的手写服务器通信。使用最新版本的Chrome和Firefox时,我从websockify收到以下错误消息:     客户端必须支持“二进制”或“base64”协议

在查看代码之后,我确定当每个协议都无法出现在从客户端收到的Sec-Websocket-Protocol标头下时,websockify会传递此消息并关闭套接字。当我查看Chrome传输的原始数据时,它甚至不会发送此标头。这是Chrome或websockify的问题,还是我在javascript中打开websocket时无法提供一些信息?还是有其他解释吗?

1 个答案:

答案 0 :(得分:8)

您需要提供协议列表作为对象构造函数的一部分:

var ws = new WebSocket(uri, ['binary', 'base64']);

如果您使用websockify附带的websock.js库,那么它将为您处理此问题。但请注意,websock.js不提供标准的WebSocket API,而是提供面向流的API。即使您使用原始WebSocket连接到websockify,请注意您仍然需要进行消息重建,因为普通TCP没有消息概念,因此从消息中分块的消息基本上是“任意的”。