简体   繁体   English

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

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

I have an app with Node.js, Express.js, and Socket.io that runs fine using ANY port except 443. The server is meant to only operate over HTTPS port 443 and likewise, the websocket should be encrypted as well.我有一个包含 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);

When I change the port (last line) to 443, the Node server crashes right away with an error:当我将端口(最后一行)更改为 443 时,节点服务器立即崩溃并显示错误:

warn: error raised: Error: listen EADDRINUSE

Apparently you've already got a server listening on that port on your machine.显然,您已经有一台服务器正在侦听您机器上的该端口。 Is is possible that you started this server elsewhere and it's still running?是否有可能您在其他地方启动了此服务器并且它仍在运行?

It means that the port is in use, you can check using : sudo netstat -tapen |这意味着该端口正在使用中,您可以使用以下命令进行检查:sudo netstat -tapen | grep ":443". grep ":443"。 If you use Apache, Ngnix or other server it is likely to be it.如果您使用 Apache、Ngnix 或其他服务器,很可能就是它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM