套接字EADDRINUSE错误

时间:2016-12-07 06:27:05

标签: node.js express socket.io

我正在尝试使用express设置一个工作nodeJS socket.io服务器。但是,我一直都会回复此错误:

Error: listen EADDRINUSE :::80

我在这个网站上尝试了其他解决方案,它告诉我搜索并终止已经运行的进程,但是grep命令没有返回正在运行的进程。我只能假设错误是我的设置代码:

var express = require("express"),
    http = require('http');
var app = express();
var server = http.createServer(app)
var io = require('socket.io')(server, {path: '/folder/socket.io'}).listen(server);
app.get("/folder/", function(req, res){
  res.sendFile(__dirname + "/folder/client/index.html");
});
app.use("/folder/client", express.static(__dirname + "/folder/client"));
app.listen(80);

请注意,我指定路径folder,因为我希望节点在子目录而不是主路径/上运行。我有什么不对的吗?

2 个答案:

答案 0 :(得分:0)

你应该使用

server.listen(80);

而不是

app.listen(80);

希望有所帮助!

答案 1 :(得分:0)

我在云实例上的操作是使用以下命令将端口80重定向到端口3000:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000