当浏览器内的websocket对象收到消息数据长度等于0的onmessage事件时,这是什么意思?
具体来说我使用Safari作为websocket客户端(Hixie)。客户端代码没什么特别的。
socket = new WebSocket(host); socket.onmessage = function(msg) { log("Received: "+msg.data.length); if(msg.data.length > 0) ... processing };
服务器基于PHP,发送的消息没有错误。
答案 0 :(得分:0)
我认为这只是Safari的烦恼。当前发布的Safari版本实现了较旧的WebSockets协议版本,并且实现有效,但有点缺乏。 0长度的消息问题非常温和。更严重的问题是无法正确关闭连接(在重新加载页面之前,基本上不会关闭实际的套接字)。
使用最近的Chrome尝试相同的测试。如果你没有看到那里的问题那么它只是一个Safari问题。如果你仍然看到0长度的消息,那么很可能PHP websocket服务器正在发送0个长度的消息(可能是一个穷人保持活着)。