简体   繁体   English

javascript mqtt websocket 在 localhost 中工作正常,在 https 服务器中工作正常

[英]javascript mqtt websocket works fine in localhost, not working in https server

javascript mqtt websocket connection works fine in localhost, not working in https server javascript mqtt websocket 连接在 localhost 中工作正常,在 https 服务器中不工作

Code代码

 <html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Hello MQTT World</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="paho-mqtt.js"></script>
    </head>
    <body>
    <script>
    var client = new Paho.Client('myserver.com',8083,'asdfg');
    client.connect({
        reconnect:true,
        onSuccess:function(){
            console.log('Connected');
            client.subscribe("/abcd/+/#");  // Where 16 is the bspid
        }
    });
    client.onMessageArrived=function(message){
        console.log(message);
    };
    </script>
    
    <ul id="logger"></ul>
    
    </body>
    </html>

Fehlermeldung费勒默东

> Error paho-mqtt.js:1054 Mixed Content: The page at
> 'https://myserver.com/pis/monitoring/mqtt.html' was loaded over HTTPS,
> but attempted to connect to the insecure WebSocket endpoint
> 'ws://myserver.com:8083/mqtt'. This request has been blocked; this
> endpoint must be available over WSS.
> LibraryFactory.ClientImpl._doConnect @ paho-mqtt.js:1054
> LibraryFactory.ClientImpl.connect @ paho-mqtt.js:887 Client.connect @
> paho-mqtt.js:2028 (anonymous) @ mqtt.html:12 paho-mqtt.js:1054
> Uncaught DOMException: Failed to construct 'WebSocket': An insecure
> WebSocket connection may not be initiated from a page loaded over
> HTTPS.
>     at ClientImpl.LibraryFactory.ClientImpl._doConnect (https://myserver.com/pis/monitoring/paho-mqtt.js:1054:19)
>     at ClientImpl.LibraryFactory.ClientImpl.connect (https://myserver.com/pis/monitoring/paho-mqtt.js:887:10)
>     at Client.connect (https://myserver.com/pis/monitoring/paho-mqtt.js:2028:12)
>     at https://myserver.com/pis/monitoring/mqtt.html:12:8 LibraryFactory.ClientImpl._doConnect @ paho-mqtt.js:1054
> LibraryFactory.ClientImpl.connect @ paho-mqtt.js:887 Client.connect @
> paho-mqtt.js:2028 (anonymous) @ mqtt.html:12

The error message is pretty clear about what the problem is错误消息很清楚问题是什么

> Error paho-mqtt.js:1054 Mixed Content: The page at
> 'https://myserver.com/pis/monitoring/mqtt.html' was loaded over HTTPS,
> but attempted to connect to the insecure WebSocket endpoint
> 'ws://myserver.com:8083/mqtt'. This request has been blocked; this
> endpoint must be available over WSS.

The browser is enforcing a secure origin policy.浏览器正在执行安全源策略。 This means that any resource accessed from a page loaded via HTTPS must be accessed by an equally secure fashion.这意味着从通过 HTTPS 加载的页面访问的任何资源都必须以同样安全的方式访问。 So in this case if you load the page via HTTP you must use a secure Web Socket connection to connect to the MQTT broker.因此,在这种情况下,如果您通过 HTTP 加载页面,则必须使用安全的 Web 套接字连接来连接到 MQTT 代理。

You will need to enable Secure Websockets on your broker and either use a wss:// URL or add useSSL: true to the options passed to the client.connect() function.您将需要在您的代理上启用安全 Websockets 并使用wss:// URL 或将useSSL: true添加到传递给client.connect() function 的选项中。

The second option is to have what ever is serving up you webpage proxy for the broker and do the SSL/TLS termination there.第二种选择是让曾经为您提供网页代理的代理,并在那里进行 SSL/TLS 终止。 eg Nginx or Apache.例如 Nginx 或 Apache。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 javascript在localhost上工作正常,但在实时服务器上却不能 - javascript working fine in localhost but not on live server JavaScript Websocket仅适用于本地主机 - JavaScript Websocket only works on localhost fullcalendar在localhost中工作正常,但在服务器中工作不正常 - fullcalendar is working fine in localhost but not in server Javascript,Jquery在localhost上运行良好,但在已部署的站点中运行不正常? - Javascript, Jquery works fine in localhost but not in the deployed site? Instagram api 在本地主机上工作正常,但在服务器上发送错误 (https://www.instagram.com/${name}/?__a=1) - Instagram api working fine on localhost but sending error on server (https://www.instagram.com/${name}/?__a=1) $ .post和AJAX不能在服务器上运行,但在localhost中工作正常 - $.post & AJAX is not working on server, but working fine in localhost javascript 位置适用于本地主机而不是服务器 - javascript location works on localhost not server Fullpage js 在本地主机上工作正常但不在实时服务器中 - Fullpage js working fine localhost but not in live server WebSocket-python服务器无法使用javascript - WebSocket - python server is not working with javascript jQuery Fadein和Fadeout在本地主机上工作正常,但在Web服务器上工作不正常 - jquery fadein and fadeout works fine on localhost but not on web server
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM