2017-09-07 63 views
0

连接到服务器mosquitto我试图连接到由英特尔爱迪生板上运行的脚本如下本地安装Mosquitto服务器 -英特尔爱迪生板

var client = mqtt.connect("ws://localhost:9001"); 

client.on('connect',() => { 
    console.log("connected"); 
}) 

但connect事件或者日志不会被调用。请注意,当我尝试从网页调用此功能时使用 -

var client = new Paho.MQTT.Client("localhost", 9001, "clientId"); 
client.connect(options); 

This works。

问题是从爱迪生板连接。有没有人遇到过这个问题?

+0

mosquitto output/log中的任何错误?如果向客户端添加on('error',function(err){})'处理程序,你会得到什么?也是爱迪生实际运行的网页的浏览器? – hardillb

+0

错误函数不会被调用。浏览器在我的笔记本电脑上,能够连接到蚊子。 – user1930106

+1

好吧,所以经纪人在笔记本电脑上运行而不是爱迪生,在这种情况下,URL应该具有不是本地主机的笔记本电脑的IP地址(并且您需要确保笔记本电脑上的任何防火墙都允许端口9001上的外部连接) – hardillb

回答

1

正如评论惨败了,

经纪人未在爱迪生运行,因此不能使用localhost在URL中的主机。 localhost是为回送接口构建的名称,因此始终指向代码正在运行的计算机。

您需要使用代理正在运行的机器(笔记本电脑)的IP地址。

如果您在具有动态IP配置的环境中运行所有这些,那么您需要查看一个名为mDNS/Avahi的项目,它允许位于.local域中的广播主机名在同一子网上的计算机寻址。这或将代理移动到具有静态IP地址和DNS条目的计算机。