在Ubuntu中工作的HTML5 Websocket脚本,不适用于Win7或WinXP

时间:2012-04-26 16:10:17

标签: html5 node.js websocket socket.io phpwebsocket

我在Win7机器上安装了lemmingzshadow / php-websocket,这很简单:

  1. 将内容解压缩到我的htdocs文件夹中。
  2. 从命令行执行server.php。
  3. 从支持Websockets的浏览器请求文件/client/status.html。
  4. 现在,这是我在运行Google Chrome 19 / Windows 7

    的本地计算机上获得的内容

    Win7 click to enlarge

    它说“连接”30秒(显示服务器没有信息)然后说“断开连接”,这是相关的命令行输出:

    command line report

    使用Firefox 12 / WinXP

    从另一台计算机通过LAN访问脚本时完全相同的问题

    winXP click to enlarge

    使用Firefox 7.0.1或Chromium

    从VirtualBox Ubuntu访问它时似乎只能工作

    Ubuntu click to enlarge

    自从我试图弄清楚为什么会发生这种情况以来,已经过了几天,尝试了其他Websocket脚本,它们只有在我从Ubuntu访问它们时才能工作。我甚至在Ubuntu / XAMPP上安装了相同的脚本,并且仍然遇到了同样的问题(脚本在Ubuntu上正常运行但在其他操作系统上没有运行)。

    我为此疯狂,不知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

在该代码(lemmingzshadow)中,默认行为是服务器屏蔽它发送给客户端的数据:

Connection.php: public function send($payload, $type = 'text', $masked = true)

由于某些原因,这可以在Chrome 18中使用,但它违反了最新的websocket规范,并且在Chrome 19中不起作用。

  

RFC 6455 Sec 5.1:

     
    

服务器不得屏蔽它发送给的任何帧        客户端。如果客户端检测到屏蔽,则必须关闭连接        帧。