0

当我尝试通过这个 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");
    }
}
4

2 回答 2

5

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

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

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

于 2014-11-23T07:56:26.967 回答
1

您需要使用 Mosquitto 1.4 版来获得 websockets 支持。这尚未发布,但您可以自己构建它。源代码可在此处获得:

https://bitbucket.org/oojah/mosquitto/branch/1.4

另一种选择是运行一个 websocket 到 MQTT 桥。您可以使用此处描述的 lighttpd 模块:

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

于 2014-11-21T10:22:23.850 回答