MQTT-over-Websockets错误:听EADDRINUSE

时间:2015-06-29 07:17:58

标签: mqtt

遵循此文档 https://github.com/mcollina/mosca/wiki/MQTT-over-Websockets

我在我的localhost中设置了代理,如

var settings = {
  http: {
    port: 1884,
    bundle: true,
    static: './'
  }
};

//here we start mosca
var server = new mosca.Server(settings);

但是当我跑步时

  

节点代理

我有这个丑陋的错误

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

2 个答案:

答案 0 :(得分:2)

这显示正在您的计算机上侦听的当前套接字:

sudo netstat -ltn

如果有人正在倾听,你会看到类似下面的内容。

tcp        0      0 0.0.0.0:1884              0.0.0.0:*               LISTEN

如果LISTENTIME_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)

答案 1 :(得分:1)

它可能不是持有套接字的节点进程

尝试运行sudo lsof -i :1884以查看它可能是我的过程。

您是否尝试将端口号更改为1884以外的其他值以查看它是否有效。