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"]