Node.js + Express.js +端口443上的Socket.io(HTTPS TLS / SSL)

我有一个Node.js,Express.js和Socket.io应用程序,使用除443之外的任何端口都可以正常运行。服务器仅用于通过HTTPS端口443运行,同样,websocket也应该被encryption。

CODE THAT WORKS var fs = require('fs'); var https = require('https'); var express = require('express'); var socket = require('socket.io'); var sslOptions = { key: fs.readFileSync(__dirname + '/../ssl/server.key, cert: fs.readFileSync(__dirname + '/../ssl/server.pem, ciphers: 'ECDHE-RSA-AES256-SHA:AES256-SHA:RC4-SHA:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM', honorCipherOrder: true }; var app = express(); var server = https.createServer(sslOptions, app); var io = socket.listen(server, { "log level" : 3, "match origin protocol" : true, "transports" : ['websocket'] }); server.listen(8443); 

当我将端口(最后一行)更改为443时,Node服务器立即崩溃,出现错误:

 warn: error raised: Error: listen EADDRINUSE 

显然你已经有一台服务器在你的机器上监听这个端口。 你可能在其他地方启动了这个服务器,它仍在运行?

这意味着该端口正在使用,你可以使用:sudo netstat -tapen | grep“:443”。 如果你使用Apache,Ngnix或其他服务器,它很可能是它。