Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于Web应用程序的MQTT_Javascript_Mqtt - Fatal编程技术网

Javascript 用于Web应用程序的MQTT

Javascript 用于Web应用程序的MQTT,javascript,mqtt,Javascript,Mqtt,我试图使用MQTT代理开发一个简单的web应用程序。我使用Mosca作为localhost上的代理。首先,我尝试了一个从web复制的程序,以了解MQTT是如何工作的。这是节目 home.html <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <script src="mqttws31.js" type="text/javasc

我试图使用MQTT代理开发一个简单的web应用程序。我使用Mosca作为localhost上的代理。首先,我尝试了一个从web复制的程序,以了解MQTT是如何工作的。这是节目

home.html

<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  <script src="mqttws31.js" type="text/javascript"></script>
  <script src="client.js">
    </script>
  </head>
  <body onload="init();">
  </body>
</html>
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  <script src="mqttws31.js" type="text/javascript"></script>
  <script src="client.js">
    </script>
  </head>
  <body onload="init();">
  </body>
</html>
当我尝试在te web浏览器中访问home.html时,该程序工作正常。我也可以在Mosca的控制台中看到正在生成的日志。然而,显而易见,这个程序并不是一个很好的例子。出于这个原因,我尝试进行一些更改以使代码可读

这是我修改后的代码-

home.html

<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  <script src="mqttws31.js" type="text/javascript"></script>
  <script src="client.js">
    </script>
  </head>
  <body onload="init();">
  </body>
</html>
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  <script src="mqttws31.js" type="text/javascript"></script>
  <script src="client.js">
    </script>
  </head>
  <body onload="init();">
  </body>
</html>

我已经运行了一个Python脚本来发布值。但是,没有生成任何输出。我检查了Mosca控制台,发现没有新的连接。我刚刚开始学习Javascript。我不确定我的新代码在语法上是否正确。

一些更改将解决这个问题

首先,您有
onFailure=
而不是
onFailure:

接下来,您要在调用connect之前(而不是之后)设置
客户端.onMessageDrive
客户端.onConnectionLost

这两个变化导致

var wsbroker = "127.0.0.1";
var wsport = 3000

var client = new Paho.MQTT.Client(wsbroker, wsport,"myclientid_" + parseInt(Math.random() * 100, 10));

    function onMessageArrived(message) {
        document.write(message.payload);
    };

    function onSuccess() {
        document.write("Connected");
        client.subscribe('temp/random');
    };

    function onFailure(message) {
        document.write("Connection Failed. Error : " + message.errorMessage);
    };

    function onConnectionLost(message) {
        document.write("Connection Lost. Error : " + message.errorMessage);
    };

    var options = {
        timeout: 3,
        onSuccess: onSuccess,
        onFailure: onFailure,
    };

  function init() {
    console.log('connecting')
      client.onMessageArrived = onMessageArrived,
      client.onConnectionLost = onConnectionLost,
      client.connect(options);

  }; 

两个简短的问题:1<代码>wsport(第2行)应该有分号。2.当函数不在块中时,是否有理由缩进
var client
下面和函数
init()
之前的函数?1。我加了分号。没有;不过我没办法。2.缩进没有特别的原因。从中可以看出,
onConnectionLost
onmessagerived
似乎不被
connect
方法接受-我在接受的参数中看不到它们。不确定这是否能解决您的问题,但似乎有潜在的相关性。此外,他们还将回调处理程序设置为连接调用的单独进程。没什么区别。