我将此代码放在名为 server.js 的文件中:
var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
io.on('connection', function(){
console.log("a client connected");
});
server.listen(80);
当我在终端(cmd)中运行node server.js
时,会抛出此错误:
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EACCES
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1023:19)
at listen (net.js:1064:10)
at Server.listen (net.js:1138:5)
at Object.<anonymous> (C:\inetpub\wwwroot\socketio\server.js:9:8)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
你知道可能出现什么问题吗?谢谢!
注意:我已经安装了 socket.io 和 express 。
答案 0 :(得分:1)
似乎不允许在端口80上打开serversocket。 请参阅错误消息中的此行
C:\inetpub\wwwroot\socketio\server.js:9:8
小于1024的套接字地址保留供系统使用。试试这个:
var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
io.on('connection', function(){
console.log("a client connected");
});
server.listen(3000);
答案 1 :(得分:0)
看起来端口80 ,无效或不可接受。我试图将它改为另一个端口(8000)并且它有效。
server.listen(8000);
异常消失了。我希望我能找到一种在运行时区分有效/无效端口的方法。