Paho JS 无法连接到 Mosquitto 服务器

And*_*a T 0 message-queue messagebroker mqtt mosquitto paho

当我尝试通过此 JS 连接到 Mosquitto 服务器时,收到此错误:

WebSocket connection to 'ws://xx.xxx.xxx.xxx:1883/mqtt' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET 
Run Code Online (Sandbox Code Playgroud)

我从控制台尝试过,它工作正常。我尝试使用 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});
Run Code Online (Sandbox Code Playgroud)

这是 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

Dom*_*ier 5

作为hardillb说,mosquitto还支持WebSockets的。如果您想要本机 websockets,还有其他解决方案,如HiveMQ。您可以在此处查看具有 websocket 支持的完整代理列表(您可能需要将表格向右滚动)。您可以在此博客文章中了解有关 websockets 上的 MQTT 的更多信息

请确保您连接到的 websocket 端口通常不是1883。实际上,这意味着您的 TCP MQTT 客户端连接到端口 1883,而您的 websocket 客户端连接到另一个端口,如 8000。

通常的免责声明:我是 HiveMQ 开发人员之一,所以这个答案可能有偏见;-)