泛美卫生组织JS无法连接到服务器Mosquitto
当我试图通过这个JS连接到服务器Mosquitto,我收到此错误:泛美卫生组织JS无法连接到服务器Mosquitto
WebSocket connection to 'ws://xx.xxx.xxx.xxx:1883/mqtt' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET
我从控制台尝试和它工作正常。 我试图用Java客户端作为提供者和消费者,它工作正常。 所以我不能承认我该怎么做才能让它工作。
这是JS:
client = new Paho.MQTT.Client("xx.xxx.xxx.xxx", 1883, "clientId");
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;
// connect the client
client.connect({onSuccess:onConnect});
这是Java的(工作):
@Stateless
@LocalBean
public class PahoManager implements MqttCallback {
MqttClient client;
public void init() {
try {
client = new MqttClient("tcp://192.168.50.10:1883", "pahomqttpublish1");
client.connect();
client.subscribe("pahodemo/test");
} catch (MqttException e) {
e.printStackTrace();
}
}
public void doDemo() {
try {
MqttMessage message = new MqttMessage();
message.setPayload("Ciao Pluto".getBytes());
client.publish("pahodemo/test", message);
//client.disconnect();
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void connectionLost(Throwable thrwbl) {
System.out.println("Connection Lost");
}
@Override
public void messageArrived(String string, MqttMessage mm) throws Exception {
System.out.println("Message: " + string + mm);
}
@Override
public void deliveryComplete(IMqttDeliveryToken imdt) {
System.out.println("Message delivered");
}
}
正如hardillb说,mosquitto 不还支持WebSockets的。如果你想要本地websockets,还有其他解决方案,如HiveMQ。您可以看到带有websocket支持的经纪商的完整列表here(您可能需要将表格向右滚动)。您可以在this blog post了解MQTT过的WebSockets:
请确保,你要连接到这通常是WebSocket的端口不 1883年在实践中,这意味着,你的TCP MQTT客户机连接到端口1883你的WebSocket客户像8000
通常免责声明另一个端口:我的HiveMQ开发商所以这个答案可能会有所偏差;-)
您需要使用Mosquitto 1.4版得到的WebSockets支持。这还没有发布,但你可以自己构建它。源可以在这里找到:
https://bitbucket.org/oojah/mosquitto/branch/1.4
另一种选择是运行的WebSocket向MQTT桥。您可以使用下面介绍的lighttpd的模块:
Mosquitto 1.4已于2015年2月发布,内置了对websockets的支持。 – romor 2015-04-23 09:40:39
你有WebSockets的服务器上运行吗?目前蚊子还没有建立起对websockets的支持。 – 2014-11-21 05:47:49