意外的响应代码:426,带有PhanthomJS Websocket客户端/ROSLIB
Unexpected response code: 426 with PhanthomJS Websocket client/ROSLIB
我正试图使用PhanthomJS(1.9.7)来设置批量测试脚本,以通过我们的Websocket服务器(在Tornado之上实现的RosBridge)驱动我们的机器人软件。
我们使用ROSLIBJS,这是一个使用标准HTML5 WebSocket API与服务器交互的JS库。我更喜欢使用NodeJS而不是PhantomJS,但ROSLIBJS中存在依赖项,需要提供浏览器DOM结构。有人为NodeJS移植了ROSLIBJS。我让它运行,但有一些关键的错误使它无法使用。因此,我需要PhantomJS。
根据此链接,存在与Websocket协议不兼容的问题。意外响应代码426
这是一个已知的问题吗。如果是这样的话,PhantomJS什么时候才能修复?我可以自己轻松地修补PhantomJS吗?
Http 426可能意味着您正在尝试连接不受支持的websocket协议版本。检查响应是否具有http标头"sec-websocket-version"以及支持的版本列表。
您的客户端正在使用哪个版本?
此外,如果您通过代理进行连接,代理可能会从请求中删除"升级"标头,因为它被标记为"连接"标头。切换到WSS://以防止这种情况发生。
有趣的是,我正在考虑为roslibjs编写集成测试,并遇到了这个问题。我会试试phantomjs-2.0(https://github.com/Vitallium/phantomjs-qt5)和真正的铬通过铬驱动器。我最喜欢公关对roslibjs的结果。
另一种选择是编写另一个使用socket.io进行客户端通信的网桥,以实现最大的可移植性。
参见本PR:https://github.com/RobotWebTools/roslibjs/pull/83。它使用chrome来运行测试。或者,您可以通过更改允许rosbridge接受draft76 websockethttps://github.com/RobotWebTools/rosbridge_suite/blob/develop/rosbridge_server/src/tornado/websocket.py#L186返回True;
- chrome在WebSocket握手期间获取新错误
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- Tomcat websocket is not working
- WebSocket握手:意外的响应代码:404
- Websocket赢得't打开连接
- Javascript connect to websocket
- 服务器端事件+客户端事件与Websocket
- 通过html5/websocket通过wifi传输文件
- 为什么我的WebSocket客户端总是在发送消息后重新加载
- WebSocket onmessage not firing
- JavaScript和Java WebSocket SSL连接错误
- nodejs二进制websocket mimetype处理
- 订阅一个具有角度的websocket的连续数据
- 将Websocket连接保持在多个页面上
- websocket客户端在发送大数据时断开连接
- 为什么我的服务器从不接收WebSocket发送
- 一个WebSocket请求应该有多大
- Chrome点击mailto:links关闭websocket连接
- 意外的响应代码:426,带有PhanthomJS Websocket客户端/ROSLIB