【问题标题】:HTML5 Websocket Script working in Ubuntu, not working in Win7 or WinXPHTML5 Websocket 脚本在 Ubuntu 中工作,在 Win7 或 WinXP 中不工作
【发布时间】:2012-04-26 16:10:17
【问题描述】:

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

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

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

click to enlarge

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

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

click to enlarge

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

click to enlarge

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

我快疯了,知道为什么会这样吗?

【问题讨论】:

  • 这是迟钝的。现在我知道这不是操作系统问题。我有一个 node.js 服务器正在运行。 socket.io 脚本在 Ubuntu 的任何浏览器中运行良好,在 Windows 的任何浏览器中都不能正常运行,OPERA 11.11 除外。 socket.io 不应该支持相对更广泛的浏览器吗? ://

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


【解决方案1】:

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

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

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

RFC 6455 第 5.1 节:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2012-11-05
    • 2013-05-10
    • 1970-01-01
    • 2022-10-19
    • 2019-03-03
    相关资源
    最近更新 更多