无法连接到JavaScript MQTT服务器

4

WebSocket错误:网络错误12031,连接服务器时被重置

我想从UI订阅mqtt消息。 我正在使用以下代码。 我的计算机上运行着mosquitto代理程序,所以我将URL设置为我的IP地址,并且它在端口号1883上侦听,我给了一个随机的客户端ID。

<!DOCTYPE html>
<html lang="en">

    <head></head>

    <body>
        <script src="../bower_components/jquery/dist/jquery.min.js"></script>
        <script src="../bower_components/jquery/dist/jquery.js"></script>
        <script src="../paho.javascript-1.0.1/mqttws31-min.js"></script>
        <script src="../paho.javascript-1.0.1/mqttws31.js"></script>
        <script src="../js/browserMqtt.js"></script>
        <script>

        // Create a client instance
        client = new Paho.MQTT.Client("10.9.177.110", 1883, "100");

        // set callback handlers
        client.onConnectionLost = onConnectionLost;
        client.onMessageArrived = onMessageArrived;

        // connect the client
        client.connect({onSuccess:onConnect});

        // called when the client connects
        function onConnect() {
            console.log("onConnect");
            client.subscribe("/World");
            message = new Paho.MQTT.Message("Hello");
            message.destinationName = "/World";
            client.send(message); 
        }

        // 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);
        }
        </script>
    </body>
</html>

如果我在主机前缀中加上tcs/ws/https/http,它会给出错误消息WebSocket Error: Network Error 12005,URL无效。 - suma shetty
2个回答

1
你试图连接的是哪种类型的代理?除了IBM MessageSight设备外,我不知道还有哪些代理可以共享相同的端口用于原生MQTT和MQTT over Websockets。
由于端口1883通常用于原生MQTT,你是否记得为MQTT over Websockets添加新的监听器?
假设你正在使用mosquitto 1.4.x,那么你需要在配置文件中添加类似以下内容:
listerner 1884
protocol websockets

这将在端口1884上添加一个Websocket监听器。

我正在使用与JAVA相同的Mosquitto代理。 - suma shetty
我正在使用MQTT v3.1代理。 - suma shetty
不是MQTT协议版本,而是Mosquitto的实际发布版本。Websocket支持在1.4流中添加,并且需要按照上述描述在配置文件中启用。 - hardillb
我查找了mosquitto的配置文件,并按建议添加了以下内容 #port 1884 #protocol websockets 但问题仍然存在。 - suma shetty
以 # 开头的行是注释,因此不会执行任何操作。您需要添加我上面建议的部分。 - hardillb
显示剩余2条评论

0

请确认您正在运行启用了WebSockets的Mosquitto版本。


请问如何检查经纪人是否支持WebSocket? - suma shetty
运行“mosquitto --version”将会打印版本。 - hardillb
V3.1 是经纪人版本。 - suma shetty
已在mosquitto配置文件中进行了建议更改,现在出现以下错误WebSocket错误:网络错误12029,无法与服务器建立连接 - suma shetty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接