【问题标题】:Unexpected response code: 426 with PhanthomJS Websocket client/ROSLIB意外的响应代码:426 与 PhanthomJS Websocket 客户端/ROSLIB
【发布时间】:2014-06-02 08:47:40
【问题描述】:

我正在尝试使用 PhanthomJS (1.9.7) 设置批处理测试脚本,以通过我们的 Websocket 服务器(在 Tornado 之上实现的 RosBridge)驱动我们的机器人软件。

我们使用 ROSLIBJS,它是一个使用标准 HTML5 WebSocket API 与服务器交互的 JS 库。我更喜欢使用 NodeJS 而不是 PhantomJS,但是 ROSLIBJS 中存在需要浏览器 DOM 结构可用的依赖项。有人为 NodeJS 移植了 ROSLIBJS。我让它运行起来了,但是有一些严重的错误使它无法使用。因此,我需要 PhantomJS。

根据此链接,与Websocket协议存在一些不兼容。 Unexpected response code 426

这是一个已知问题。如果是这样,PhantomJS 什么时候可以修复它才能工作?我可以自己轻松修补 PhantomJS 吗?

【问题讨论】:

    标签: javascript websocket ros


    【解决方案1】:

    Http 426 可能意味着您正在尝试使用不受支持的 websocket 协议版本进行连接。检查响应是否包含带有支持版本列表的 http 标头“sec-websocket-version”。

    您的客户端使用的是哪个版本?

    此外,如果您通过代理进行连接,则代理可能会从请求中删除“升级”标头,因为它被标记为“连接”标头。切换到 WSS:// 以防止这种情况发生。

    【讨论】:

      【解决方案2】:

      有趣的是,我正在考虑为 roslibjs 编写集成测试并遇到了这个问题。我将通过 chromedriver 尝试 phantomjs-2.0 (https://github.com/Vitallium/phantomjs-qt5) 和真正的 chrome。我最喜欢 PR 反对 roslibjs 的结果。

      另一种选择是编写另一个使用 socket.io 进行客户端通信的桥,以实现最大的可移植性。

      请参阅此 PR:https://github.com/RobotWebTools/roslibjs/pull/83。它使用 chrome 来运行测试。或者,您可以通过将https://github.com/RobotWebTools/rosbridge_suite/blob/develop/rosbridge_server/src/tornado/websocket.py#L186 更改为返回 True 来允许 rosbridge 接受 Draft76 websocket;

      【讨论】:

        猜你喜欢
        • 2020-03-11
        • 2017-12-13
        • 2015-08-10
        • 2015-06-09
        • 1970-01-01
        • 1970-01-01
        • 2020-05-20
        • 2021-05-09
        • 2017-07-22
        相关资源
        最近更新 更多