2013-05-15 66 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

相關問題