当浏览器内的 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,消息发送无误。
最佳答案
我认为这只是 Safari 的一个烦恼。当前发布的 Safari 版本实现了较旧的 WebSockets 协议(protocol)版本,并且该实现可以工作,但有点缺乏。 0 长度消息问题相当温和。一个更严重的问题是无法正确关闭连接(基本上在页面重新加载之前不会关闭实际的套接字)。
使用最新的 Chrome 尝试相同的测试。如果您没有看到问题,那么这只是 Safari 的问题。如果您仍然看到 0 长度的消息,那么 PHP websocket 服务器很可能正在发送 0 长度的消息(可能是作为一种穷人保持事件状态)。
关于php - Websocket 客户端(浏览器)收到一条零长度消息 - 它是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8613912/