1

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

  1. 将内容解压缩到我的 htdocs 文件夹中。
  2. 从命令行执行 server.php。
  3. 从支持 Websockets 的浏览器请求文件 /client/status.html。

现在这是我在运行 Google Chrome 19 / Windows 7 的本地机器上得到的结果

Win7 点击放大

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

命令行报告

使用 Firefox 12 / WinXP 从另一台计算机通过 LAN 访问脚本时完全相同的问题

WINXP 点击放大

它似乎只在使用 Firefox 7.0.1 或 Chromium 从我的 VirtualBox Ubuntu 访问它时才有效

Ubuntu 点击放大

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

我为此发疯,知道为什么会这样吗?

4

1 回答 1

0

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

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

出于某种原因,这将在 Chrome 18 中运行,但它违反了最新的 websocket 规范并且在 Chrome 19 中不起作用。

RFC 6455 第 5.1 节:

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

于 2012-05-11T06:48:25.833 回答