泛美卫生组织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"); 
    } 
} 
+0

你有WebSockets的服务器上运行吗?目前蚊子还没有建立起对websockets的支持。 – 2014-11-21 05:47:49

正如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的模块:

http://test.mosquitto.org/ws.html

+1

Mosquitto 1.4已于2015年2月发布,内置了对websockets的支持。 – romor 2015-04-23 09:40:39