JBoss AeroGear JavaScript notifier是一组适配器,它们提供统一/类似的API,用于与不同的消息传递服务和协议进行交互。
问题
我正在为JBoss AeroGear JS MQTT over WS adapter编写一些QUnit测试,这些测试依赖于Eclipse Paho MQTT JavaScript客户端。这些测试适用于Firefox / Chrome,但在PhantomJS 1.9.7上失败并出现AMQJS0008I Socket closed
连接错误。
最初,我的测试是针对Apache Active MQ代理版本5.9.0运行的,它支持基于WebSockets的MQTT开箱即用。我还修改了它们,以便在WebSockets沙箱环境ws://iot.eclipse.org/ws
上使用Eclipse Paho MQTT,但问题仍然存在。
如何重现?
克隆我的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套接字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"]