php - Websocket 客户端(浏览器)收到一条零长度消息 - 它是什么?

标签 php javascript safari websocket message

当浏览器内的 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/

相关文章:

php - 图像未在网页中显示(PHP 与 Laravel),其他代码工作 100% 正常

javascript - Magento 中的调用函数

javascript - document.body.clientHeight 返回无效结果

javascript - 在没有 DOM 操作或 jQuery 的情况下,如何在 AngularJS 中制定指令来验证电子邮件或密码确认?

javascript - 多次触摸 : touchend event fired only when a touchmove occurs

javascript - PHP MySQL 短查询关联代码

php - GCM 丢弃消息

javascript - 触发 Safari 扩展下载的最佳方式是什么?

javascript - 使用 Wordpress 网站时 Safari 上的砖石布局错误

jquery - 在不刷新屏幕的情况下,使用 jQuery 更改不透明度在 Chrome 或 Safari 中不起作用