4

我已经搜索了很长时间,但我还没有找到任何有用的东西。
我正在尝试实现一个 MQTT-Javascript-Client。随着 Mosquitto V1.0 的发布,在http://mosquitto.org/js/mosquitto-1.0.js上发布了一个 javascript/websocket-client。
但我不知道如何以正确的方式实现这一点。
例如:我使用http://broker.mqttdashboard.com上的示例服务器作为代理。当我在我的 xampp-Server 上运行以下 html 时,没有任何反应,并且在代理端没有连接客户端。我认为我实现它的方式有一些不正确的地方。如果有人可以帮助我,那就太好了。

<html><head>
<script type="text/JavaScript" src="mosquitto-1.0.js"></script> 

<script type="text/JavaScript">
    var t = new Mosquitto();
    t.connect('ws://broker.mqttdashboard.com:1883/',10);
    t.subscribe("mqttdashboard/testtopic", 0);
</script> 
</head>
<body></body></html>

我也知道 node.js-thing,但我更喜欢使用 websocket-way。谢谢。

4

3 回答 3

6

您要连接的服务器需要支持 websocket。您连接到端口 1883 的事实向我表明它没有!这里的正常情况是连接到端口 80(web),然后升级到 websockets 连接,该连接恰好与 mqtt 通信。这通常需要 Web 服务器与 mqtt 代理对话并配置为这样做,这不是自动发生的事情。

尝试使用 ws://test.mosquitto.org/ws 作为你的 url,它是我目前知道的唯一启用 websocket 的 mqtt 服务器。

于 2012-09-19T16:29:02.510 回答
0

MQTT 仪表板现在支持端口 8000 上的 websocket。它使用HiveMQ MQTT 代理,该代理从 1.4 版开始支持本机 websocket。

Mosquitto.js 现在似乎已被弃用,所以我强烈建议使用Eclipse Paho.js作为 Javascript MQTT 客户端。

你的 mosquitto.js 代码现在可以像这样修改它:

<html><head>
<script type="text/JavaScript" src="mosquitto-1.0.js"></script> 

<script type="text/JavaScript">
    var t = new Mosquitto();
    t.connect('ws://broker.mqttdashboard.com:8000/',10);
    t.subscribe("mqttdashboard/testtopic", 0);
</script> 
</head>
<body></body></html>
于 2013-08-23T21:08:52.320 回答
0

试试 broker.hivemq.com:8000 的 websockets,它支持 ws。它应该工作

我试过这个,它到目前为止工作

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js" type="text/javascript">
</script>
<script type="text/javascript">

client = new Paho.MQTT.Client("broker.hivemq.com", 8000, "clientId-" + parseInt(Math.random() * 100, 10));
// set callback handlers
 client.onConnectionLost = onConnectionLost;
  client.onMessageArrived = onMessageArrived;
  var options = {
    onSuccess:onConnect,
    onFailure:doFail
  }
  // connect the client
  client.connect(options);
  // called when the client connects
  function onConnect() {
    // Once a connection has been made, make a subscription and send a message.
    console.log("onConnect");
    client.subscribe("my/topic1");

  }
  function doFail(e){
    console.log(e);
  }
  // called when the client loses its connection
  function onConnectionLost(responseObject) {
    if (responseObject.errorCode !== 0) {
      console.log("onConnectionLost:"+responseObject.errorMessage);
    }
  }

  // called when a message arrives
  function onMessageArrived(message) {
    console.log("onMessageArrived:"+message.payloadString);
    document.write(message.payloadString);
    alert("messgaearrived!")
  }

</script>

并在 cloudmqtt.com 上试一试

于 2017-06-26T13:03:33.510 回答