【问题标题】:Node.js + Express.js + Socket.io on port 443 (HTTPS TLS/SSL)Node.js + Express.js + Socket.io 在端口 443 (HTTPS TLS/SSL)
【发布时间】:2014-03-29 01:08:20
【问题描述】:

我有一个包含 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 时,Node 服务器立即崩溃并出现错误:

warn: error raised: Error: listen EADDRINUSE

【问题讨论】:

  • 表示443正在被其他进程使用

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


【解决方案1】:

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

【讨论】:

  • 不,这是该服务器上唯一运行的东西。
  • 好吧,事实证明你是对的。一个杂散节点服务器正在运行。它之前一定没有被正确杀死。
【解决方案2】:

表示该端口正在使用中,您可以使用以下命令查看: sudo netstat -tapen | grep“:443”。 如果您使用 Apache、Ngnix 或其他服务器,很可能就是它。

【讨论】:

    猜你喜欢
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    相关资源
    最近更新 更多