【发布时间】:2014-02-08 05:12:04
【问题描述】:
我已经按照 Dom Bramley 的博客文章中的讨论设置了带有 mod_websocket 的 lighttpd(除了我使用 BeagleBone Black 和 Debian Wheezy 而不是 rPi。)
[在 lighttpd/mod_websocket 构建过程中,有人问我是否要修补服务器,我说是的。]
我有蚊子 MQTT 代理在同一主机上运行并发布各种主题。
当我尝试通过 Web 套接字使用浏览器客户端连接到代理时,我可以看到在 http 升级到 websocket 并将连接请求转发到 mosquitto 方面一切正常。 Mosquitto 获取连接请求并接受它。但是,返回到浏览器的响应不包括与原始升级请求中的子协议说明符 mqttv3.1 相呼应的 Sec-Websocket-Protocol 标头。客户端正确拒绝了这个答案,连接被关闭。
来自 mqttws31.js:912 的 javascript 错误是“Sent non-empty Sec-Websocket-Protocol header but no response is received”。使用 Wireshark,我可以看到这是真的; 101 Switching Protocols 响应包含标头 Upgrade、Connection 和 Sec-Websocket-Accept,但没有其他内容。
我的 mod_websocket 配置文件定义了主机、端口、类型和子协议,与 Dom 的示例相同,我可以从各种调试语句中看到请求正确到达 Mosquitto。
谁能建议如何将 Websocket-Protocol 标头包含在响应中?它必须有效,Dom 写了一篇博客文章描述了他是如何做到的!
【问题讨论】:
-
如果您对 mod_websocket 有太多麻烦,您可以随时在 node 或 php 或您使用的任何语言中创建自己的 websocket。 github.com/esromneb/phpwebsocket