我正在尝试使用websockify来允许在浏览器中执行的javascript与我手写的服务器进行对话。当使用最新版本的Chrome和Firefox时,我从websockify得到以下错误信息:客户端必须支持'binary‘或'base64’协议
在查看代码后,我确定websockify传递此消息,并在这两个协议都不能出现在从客户端接收的Sec-Websocket-Protocol标头下时关闭套接字。当我查看Chrome传输的原始数据时,它甚至没有发送这个报头。这是Chrome或websockify的问题,还是我在javascript中打开websocket时无法提供一些信息?还是有其他的解释?
发布于 2013-04-12 23:35:07
您需要提供协议列表作为对象构造函数的一部分:
var ws = new WebSocket(uri, ['binary', 'base64']);如果你使用websockify附带的websock.js库,那么它会为你处理这个问题。但是,请注意,websock.js不提供标准的API,而是提供面向流的WebSocket。即使你使用一个原始的WebSocket连接来websockify,注意你仍然需要做消息重构,因为普通的TCP没有消息的概念,所以来自onmessage的消息分块本质上是“任意的”。
https://stackoverflow.com/questions/15962359
复制相似问题