MQTT-over-Websockets Error: listen EADDRINUSE
MQTT-over-Websockets Error: listen EADDRINUSE
正在关注此文档
https://github.com/mcollina/mosca/wiki/MQTT-over-Websockets
我在我的本地主机中设置了代理
var settings = {
http: {
port: 1884,
bundle: true,
static: './'
}
};
//here we start mosca
var server = new mosca.Server(settings);
但是当我运行
node broker
我遇到了这个丑陋的错误
events.js:85
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at exports._errnoException (util.js:746:11)
at Server._listen2 (net.js:1146:14)
at listen (net.js:1172:10)
at net.js:1270:9
at dns.js:85:18
at process._tickCallback (node.js:355:11)
at Function.Module.runMain (module.js:503:11)
at startup (node.js:129:16)
at node.js:814:3
检查我是否有其他进程
ps -ax | grep node
5266 pts/2 R+ 0:00 grep --colour=auto node
kill -9 5266
bash: kill: (5266) - No such process
你有什么问题吗?
更新
感谢@hardillb 和@ralight
我用
解决了这个问题
sudo lsof -i TCP:1883
如果有蚊子简单
运行
sudo service mosquitto stop
这显示了当前正在您的计算机上侦听的套接字:
sudo netstat -ltn
如果有东西在监听,您会期望看到类似下面的内容。
tcp 0 0 0.0.0.0:1884 0.0.0.0:* LISTEN
如果LISTEN
被替换为TIME_WAIT
,那么mosca中可能存在错误,不允许它重用未超时的监听套接字。不过我认为这不太可能。
要查找使用端口的进程,可以使用lsof
:
sudo lsof -i TCP:1884
这将给出类似于我通过 运行 sudo lsof -i TCP:22
获得的下面示例的输出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 3878 root 3u IPv4 4505 0t0 TCP *:ssh (LISTEN)
持有套接字的可能不是节点进程
尝试 运行 sudo lsof -i :1884
看看它可能对我有什么影响。
您是否也尝试过将端口号更改为 1884 以外的其他端口号,看看是否可行。
正在关注此文档 https://github.com/mcollina/mosca/wiki/MQTT-over-Websockets
我在我的本地主机中设置了代理
var settings = {
http: {
port: 1884,
bundle: true,
static: './'
}
};
//here we start mosca
var server = new mosca.Server(settings);
但是当我运行
node broker
我遇到了这个丑陋的错误
events.js:85
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at exports._errnoException (util.js:746:11)
at Server._listen2 (net.js:1146:14)
at listen (net.js:1172:10)
at net.js:1270:9
at dns.js:85:18
at process._tickCallback (node.js:355:11)
at Function.Module.runMain (module.js:503:11)
at startup (node.js:129:16)
at node.js:814:3
检查我是否有其他进程
ps -ax | grep node
5266 pts/2 R+ 0:00 grep --colour=auto node
kill -9 5266
bash: kill: (5266) - No such process
你有什么问题吗?
更新
感谢@hardillb 和@ralight 我用
解决了这个问题sudo lsof -i TCP:1883
如果有蚊子简单 运行
sudo service mosquitto stop
这显示了当前正在您的计算机上侦听的套接字:
sudo netstat -ltn
如果有东西在监听,您会期望看到类似下面的内容。
tcp 0 0 0.0.0.0:1884 0.0.0.0:* LISTEN
如果LISTEN
被替换为TIME_WAIT
,那么mosca中可能存在错误,不允许它重用未超时的监听套接字。不过我认为这不太可能。
要查找使用端口的进程,可以使用lsof
:
sudo lsof -i TCP:1884
这将给出类似于我通过 运行 sudo lsof -i TCP:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 3878 root 3u IPv4 4505 0t0 TCP *:ssh (LISTEN)
持有套接字的可能不是节点进程
尝试 运行 sudo lsof -i :1884
看看它可能对我有什么影响。
您是否也尝试过将端口号更改为 1884 以外的其他端口号,看看是否可行。