簡體   English   中英

無法運行MQTT JavaScript客戶端

[英]Trouble to get MQTT JavaScript Client running

我嘗試運行MQTT JavaScript客戶端。 它基於Eclipse Paho客戶端庫(org.eclipse.paho.mqtt.javascript.git)。

在運行JavaScript客戶端之前,我正在執行一些測試

  • mosquitto_pub -h test.mosquitto.org -t“/ topic1”-m“test”

  • mosquitto_sub -h test.mosquitto.org -t“/ topic1”-v

工作正常。

然后我打電話給我自己的mqttTest.html,它包含:

<!DOCTYPE html>
<head>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  <script type="text/JavaScript" src="mqttws31.js"></script>
  <script type="text/JavaScript">

  var client;

  function doConnect() {

    client = new Messaging.Client("test.mosquitto.org", 1883, "mosqOtti");
    console.log("Client instantiated.");
    client.startTrace();
    console.log("Now trying to connect...");
    client.connect({onSuccess:onConnect});

  }

  function onConnect() {

    console.log("connection established");
    doSubscribe();

  }

  function doSubscribe() {

      client.subscribe("/topic1");

  }

  window.onload = function() {

      this.doConnect();

  }

</script>
</head> 

.
.
.

</body>
</html>

我試圖在Firefox中實現這一點。 調試控制台輸出告訴我

[09:58:27.825] Firefox can't establish a connection to the server at ws://test.mosquitto.org:1883/mqtt. @ file:///mqttws31.js:914

我知道moquitto本身不支持websockets。 但我認為test.mosquitto.org上運行的lighttp已經安裝了mod_websockets。

mqttws31.js的第914行正在嘗試執行此操作.socket = new WebSocket(wsurl,'mqttv3.1');

所以看來

  • websockets並不適用於test.mosquitto.org
  • 或者我的例子是馬車!

我現在徘徊了很長時間,需要運行一個JavaScript MQTT客戶端。

有沒有人有想法? 還是另一種方法? Socket.IO似乎也不是正確的解決方案。

首先十分感謝!

正如@hardillb所說,您使用的端口不正確。 test.mosquitto.org上的1883年僅供mqtt使用。 如果你想使用websockets,你需要使用端口80連接。你應該只能將你的網址更改為ws://test.mosquitto.org:1883/mqtt ,這可能意味着你的代碼更改為

client = new Messaging.Client("test.mosquitto.org", 80, "mosqOtti");

http://test.mosquitto.org/sys/上運行了一個websockets示例(基於此代碼 )。 雖然它使用了已棄用的mosquitto javascript客戶端,但它應該證明它有效。

test.mosquitto.org上的lighttpd配置是:

websocket.server = (
    "/mqtt" =>
    (  
        "host" => "127.0.0.1",
        "port" => "1883",
        "subproto" => "mqttv3.1",
        "type" => "bin"
    )
)

我很難讓這個為我工作,並想為Ubuntu發布最快/最簡單的解決方案。

在Ubuntu上安裝帶有websocket支持的lighttpd

基本上,請關注此博文: http//oriolrius.cat/blog/tag/mqtt/

腳步:

1)從這里為您的ubuntu版本添加存儲庫: https//launchpad.net/~roger.light/+archive/ppa/

對於Ubuntu 12.04 LTS(精確),線路是:

deb http://ppa.launchpad.net/roger.light/ppa/ubuntu precise main
deb-src http://ppa.launchpad.net/roger.light/ppa/ubuntu precise main

2)安裝lighttpd和mod_websocket插件:

apt-get update
apt-get install lighttpd lighttpd-mod-websocket

3)在/etc/lighttpd/lighttpd.conf中包含的某個地方添加MQTT websocket的配置

server.modules = ( "mod_websocket", )

websocket.server = (
    "/mqtt" => (
        "host" => "127.0.0.1",
        "port" => "1883",
        "type" => "bin",
        "subproto" => "mqttv3.1"
    ),
)

...

4)(可選)將lighttpd指向非html套接字。 這很有效

server.port = 8080

5)重啟lighttpd,Javascript客戶端連接到http://hostname:8080 我使用了Paho Javascript客戶端,其中包含以下命令: https ://www.ibm.com/developerworks/community/blogs/c565c720-fe84-4f63-873f-607d87787327/entry/how_to_prog_javascript?lang = en

service lighttpd restart

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM