我有一个套接字应用程序,我正试图在端口443(https)上进行监听。如果我改变端口(例如8080)我没有问题。
显示的错误是
error raised: Error: listen EACCES
我的应用源代码是:
var fs = require('fs');
// create the https server and listen on port
var options = {
ca: fs.readFileSync('ca.pem'),
cert: fs.readFileSync('cert.pem'),
key: fs.readFileSync('server.key')
};
var server = require('https').createServer(options);
var portNo = 443;
var app = server.listen(portNo, function() {
console.log((new Date()) + " Server is listening on port " + portNo);
});
// create the socket server on the port
var io = require('socket.io').listen(app);
// This callback function is called every time a socket
// tries to connect to the server
io.sockets.on('connection', function (socket) {
console.log((new Date()) + ' Connection established.');
// When a user send a SDP message
// broadcast to all users in the room
socket.on('message', function (message) {
socket.broadcast.emit('message', message);
});
// When the user hangs up
// broadcast bye signal to all users in the room
socket.on('disconnect', function () {
// close user connection
console.log((new Date()) + " Peer disconnected.");
socket.broadcast.emit('user disconnected');
});
});
我见过很多关于Linux的答案,告诉他们以sudo身份运行,所以我尝试以管理员身份运行节点服务器,但无济于事。
这是在Windows Server 2012上运行的。
感谢。
答案 0 :(得分:7)
我想补充一点,如果启动节点应用程序时没有root权限级别,则无法在443端口上运行
答案 1 :(得分:2)
您是否确认端口443尚未使用?
转到命令行并运行netstat -a
并验证:443不在列表中。如果是,您需要在继续之前终止使用该端口的任何进程。