![](/img/trans.png)
[英]How to use browser-side JavaScript (document, window, etc.) when running a node.js server to change the HTML document?
[英]How to tunnel browser-side mqtt through the server?
浏览器使用它来连接到 mosquitto(websockets 模式):
new Paho.MQTT.Client('localhost', 9001, '');
据我了解,这是从浏览器到代理的直接连接。 当浏览器在另一台机器上时,它不会在正常设置中工作。
在正常设置中,nodejs 和代理在同一台机器上。 如何通过 nodejs 路由它,以便 nodejs 可以将连接转发到localhost:9001
? 而且我不想编写大量代码来重新打包消息和重新实现不同的订阅 API。
localhost
是一种特殊情况的主机名,指的是运行某些代码的机器。
假设您要连接的代理在托管网页的同一台机器上,您可以使用location
变量来获取您需要的信息。
var client = new Paho.MQTT.Client(location.hostname, 9001, '');
假设您正在代理 webapp,那么 websockets 也可以在同一端口上进行代理,最终结果为:
var client = new Paho.MQTT.Client(location.hostname, parseInt(location.port), '');
还要代理 mqtt(使用 nginx):
location /mqtt {
proxy_pass http://127.0.0.1:9001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
您可以打开另一个端口,然后设置一个 SSH 隧道(即 SSH 隧道 MQTT 数据)。 这样做的好处是它允许您轻松地将此端口公开或不公开到互联网,并且它是安全的(加密的)。
本教程介绍了如何执行此操作。 显然,由于 MQTT 数据通过 SSH(通过 SSH 隧道)传输,因此它是 100% 加密的,因此是安全的。 当然,您也可以使用 RSA 密钥(确实使 SSH 连接非常安全),然后编写一个简单的 BASH 脚本来自动化所有这个过程,我猜。 教程链接: SSH 隧道 MQTT
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.