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

时间:2014-03-29 01:08:21

标签: node.js express https socket.io wss

我有一个带有Node.js,Express.js和Socket.io的应用程序,使用除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时,节点服务器立即崩溃并出现错误:

warn: error raised: Error: listen EADDRINUSE

2 个答案:

答案 0 :(得分:1)

显然,您已经有一台服务器正在侦听您计算机上的该端口。您是否有可能在其他地方启动此服务器并且它仍在运行?

答案 1 :(得分:1)

这意味着该端口正在使用中,您可以使用以下方法进行检查: sudo netstat -tapen | grep“:443”。 如果你使用Apache,Ngnix或其他服务器,很可能就是这样。