后端启动 websocket 的 mqtt 服务,前端应该怎么连接

2019-02-02 11:03:11 +08:00
 chenlaocong

是这样的,我们公司需要做即时通讯的功能,选择了 mqtt 协议来进行通讯,我自己这边起了一个 node 的 mqtt 的服务端,然后再起一个 node 的 mqtt 的客户端访问正常。用 python 起了一个 mqtt 的客户端也可以正常访问 node 的服务端。但是直接用一个静态 html 里面写 mqtt 的 js 就不能正常访问了。

这个是 mqtt 的服务 nodejs 代码

const mosca = require('mosca')
const MqttServer = new mosca.Server({
  port: 8081
})

MqttServer.on('clientConnected', function(client){
  console.log('client connected', client.id);
  console.log('客户端连接成功啦啦啦');
});

这个是 node 的客户端代码,访问正常

let mqtt = require('mqtt')
let options = {
}
let client = mqtt.connect('mqtt://127.0.0.1:8081', options)

client.on('connect', function (res) {
  console.log(res)
})

以下是前端代码,访问失败

<meta charset="UTF-8">
<html>
    <head>
        <title> QBB IM WebSocket Example</title>
        <style></style>
            <script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type ="text/javascript"> 
            </script>
            <script type="text/javascript" language="javascript">
                var mqtt;
                var reconnectTime=1000;
                // var host="192.168.1.20"; // ws://apiimtest.qbb6.com
				var host="127.0.0.1";
                var port= 8081;
                function onConnect(){
                    console.log("connected");
                    message = new Paho.MQTT.Message("Hello World");
                    mqtt.send(message); 
                }
                function onFailure(){
                    console.log("onFailure");
                }
                function MQTTConnect(){
                    console.log("connecting to "+host+" "+port);
					// console.log(new Paho())
                    mqtt = new Paho.MQTT.Client(host, port, "clientjs");
                    var options={
                        // timeout:3,
						useSSL: false,
						onFailure: onFailure,
                        onSuccess:onConnect
                    };
                    mqtt.connect(options);
					console.log("oo")
                }
            </script>
    </head>
    <body>
        <h1>Main Body</h1>
        <script>
            MQTTConnect();
        </script>
    </body>
</html>
2456 次点击
所在节点    程序员
1 条回复
chenlaocong
2019-02-02 17:58:15 +08:00
怎么在客户端看的不是 markdown 啊😯😯

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/532617

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX