【问题标题】:Node.js Socket.io chat server SSLNode.js Socket.io 聊天服务器 SSL
【发布时间】:2016-05-11 07:45:25
【问题描述】:

我正在尝试让我在 node.js/socket.io 中的聊天应用程序在 SSL (https) 上工作,我现在在启动服务器时没有收到错误但我无法再连接了。

我用谷歌搜索并尝试了很多例子,但我无法让它工作。

这是我的旧代码(在 http 中有效)

    var express = require('express')
  , app = express()
  , http = require('http')
  , server = http.createServer(app)
  , io = require('socket.io').listen(server);

server.listen(8080);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

这是我修改后的代码:

var https = require('https');
var fs = require('fs');

var options = {
  key: fs.readFileSync('cert.key'),
  cert: fs.readFileSync('cert.crt')
};

var express = require('express')
  , app = express();

var server = https.createServer(options);
var io = require('socket.io').listen(server);

server.listen(8080);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

【问题讨论】:

    标签: javascript node.js ssl socket.io


    【解决方案1】:

    这就是我在节点上创建 https 服务器的方式。一旦它对我来说工作正常就试试吧。

    var port = "80";
    var express = require('express')
    , app = express()
    , http = require('http')
    , server = http.createServer(app);
    server.listen(port);
    
    var fs = require('fs');
    var net = require('net');
    var tls = require('tls');
    var sslOptions = {
            key: fs.readFileSync('public/server.key'),
            cert: fs.readFileSync('public/server.crt')
    };
    tls.createServer(sslOptions, function (cleartextStream) {
        var cleartextRequest = net.connect({
            port: port, //your port
            host: serverStr // your server address
        }, function () {
            cleartextStream.pipe(cleartextRequest);
            cleartextRequest.pipe(cleartextStream);
        });
    }).listen(443);
    

    【讨论】:

    • 感谢您的帮助,我收到此错误:events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE at errnoException (net.js:905:11) at Server._listen2 (net.js:1043:14) at listen (net.js:1065:10) at Server.listen (net.js:1139:5) at Object.<anonymous> (/usr/lib/node_modules/app.js:6:8) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10)
    • 更改端口,该端口号上正在运行其他东西。
    • 更改端口时出现同样的错误,我在端口 80 上运行网络服务器是这个问题吗?
    • 可以,它是http的默认端口,443是https的默认端口。打开命令提示符并使用 netstat -b ,它会显示所有活动的端口和进程。
    • 端口上运行了一些东西,我尝试了另一个它可以工作的东西谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2014-11-13
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多