Mac和树莓派运行Node WebSocket服务均报9092端口EADDRINUSE占用错误
问题解决方法
根本原因
你当前启动的Docker Kafka容器已经占用了宿主机的9092端口,而server.js中的WebSocket服务配置为监听相同的9092端口,两个服务抢占同一端口触发EADDRINUSE报错。
具体解决步骤
- 修改server.js中WebSocket服务的监听端口,替换为未被占用的端口即可,比如8080、3000:
找到以下代码:
修改为:const wss = new WebSocket.Server({ port: "9092" });// 此处端口可自行替换为其他未被占用的端口 const wss = new WebSocket.Server({ port: "8080" }); - 调整前端WebSocket连接地址为修改后的端口,比如原连接地址为
ws://localhost:9092的话,同步改为ws://localhost:8080。 - 确认Docker的Kafka、Zookeeper服务正常运行后,再启动server.js即可正常运行,不会再出现端口占用报错。
如果确实需要WebSocket服务使用9092端口,可调整Kafka的映射端口:
- 修改docker-compose.yml中Kafka的端口映射配置,将宿主机映射端口改为其他未占用端口,比如9093:
ports: - '9093:9092' environment: - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9093 - 重新启动Docker服务使配置生效后,再启动监听9092端口的WebSocket服务即可。
内容的提问来源于stack exchange,提问作者snice
相关产品推荐
相关产品推荐

