Node.js + Express.js + Socket.io on port 443 (HTTPS TLS/SSL)



我有一个应用程序与Node.js, Express.js和Socket。使用443以外的任何端口都可以正常运行。服务器只能在HTTPS端口443上运行,同样,websocket也应该加密。

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

显然您的机器上已经有一个服务器在监听该端口。是否有可能您在其他地方启动了此服务器,但它仍在运行?

表示该端口正在使用中,您可以使用:执行命令netstat -tapen | grep ":443"。如果您使用Apache、Ngnix或其他服务器,则很可能是这样。

最新更新