2013-05-15 70 views
2

我有一个套接字应用程序,我试图在端口443(https)上侦听。如果我改变端口(例如8080),我不会遇到任何问题。无法运行节点js应用程序侦听443

所示的错误是

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告诉他们作为须藤运行的答案,所以我尝试运行的节点服务器为管理员,但无济于事。

这是在Windows Server 2012框上运行。

谢谢。

回答

2

您是否已验证端口443尚未被使用?

转到您的命令行并运行netstat -a并验证:443不在列表中。如果是这样,在继续之前,您需要终止使用该端口的任何进程。

+0

我不能共享IIS端口(我有一个网站作为https运行在同一个ip上)?如果不是这可以解释它。我不知道这是一个限制。 – rashleighp

+1

您无法与IIS共享端口。进程无法共享TCP端口。 – Daniel

+0

IIS能够在单个端口上为多个站点提供服务,因为它全部由同一个进程处理。当它收到HTTP请求时,它会查看主机名HTTP标头并使用它来确定要提供哪个网站。即便如此,由于我不完全理解的原因,这不适用于443,但我怀疑它与SSL的工作方式有关。 –

7

我只想补充一点,如果你没有root权限级别当您启动节点应用程序,你将无法在端口上运行443

+0

无论如何删除443根保护? –

+0

我正在运行Ubuntu 14.04 –

+0

http://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-on-l ---我认为这可能会帮助你。我使用的是macOS,因此我只是使用以root身份运行的.plists来启动我的应用程序,但如果您想运行没有root权限的应用程序,那么本文至少应该介绍基础知识 – Squivo

相关问题