9

JBoss AeroGear JavaScript 通知器是一组适配器,它们提供统一/相似的 API 用于与不同的消息传递服务和协议进行交互。

问题

我正在为依赖于 Eclipse Paho MQTT JavaScript 客户端的JBoss AeroGear JS MQTT over WS 适配器编写一些 QUnit 测试。测试在 Firefox/Chrome 上运行,但在 PhantomJS 1.9.7 上失败并出现AMQJS0008I Socket closed连接错误。

最初,我的测试是针对支持 MQTT over WebSockets 的 Apache Active MQ 代理版本 5.9.0 运行的。我还修改了它们以使用 Eclipse Paho MQTT over WebSockets 沙箱环境ws://iot.eclipse.org/ws,但问题仍然存在。

如何重现?

克隆我的 GitHub 存储库https://github.com/tolis-e/aerogear-js-integration。签出stackoverflow分支,执行npm install然后grunt integration-iot --debug. 为了验证测试是否在 Firefox/Chrome 上运行,请tests/notifier/mqttws.html在浏览器中打开。QUnit 测试位于mqttws.js文件中。正如您在下面的日志中看到的那样,我遇到了一个AMQJS0008I Socket closed错误。

关于错误原因的任何想法?我的感觉是这个问题与 PhantomJS 1.9.7 不支持 Web Sockets RFC 6455 的事实有关。看起来 PhantomJS 2.x 将支持 RFC 6455

日志

[D] ["phantomjs","qunit.begin"]
[D] ["phantomjs","onLoadFinished","success"]
[D] ["phantomjs","qunit.moduleStart","Connect / Disconnect"]
[D] ["phantomjs","qunit.testStart","Connect to and Disconnect from MQTT Server"]
[D] ["phantomjs","console","Unexpected response code: 404"]
Unexpected response code: 404
[D] ["phantomjs","console","Connection error: AMQJS0008I Socket closed."]
Connection error: AMQJS0008I Socket closed.
[D] ["phantomjs","fail.timeout"]
4

0 回答 0