如何使用SSL进行socket.io对话

时间:2017-07-14 11:10:40

标签: javascript node.js ssl socket.io long-polling

我想让socket.io与SSL的JavaScript版本对话。当我尝试engine.io时,会给出关于混合内容的轮询错误。

以下服务器代码。

var fs = require('fs'),
    privateKey  = fs.readFileSync('./secure.key', 'utf8'),
    certificate = fs.readFileSync('./secure.crt', 'utf8'),
    credentials = { agent: false, requestCert: true, rejectUnauthorised: false, key: privateKey, cert: certificate },
    app = require('https').createServer(credentials, handler),
    url = require("url"),
    io = require('socket.io').listen(app),
    path = require("path");
var zlib = require('zlib');
var config = require('./config');

    io.sockets.on('connection', socketHandler);

    function socketHandler(socket)
{
    GLOBAL.sockets[GLOBAL.sockets.length] = socket;
    socket.playerId = nextPlayerId++;
    socket.pingDate = new Date();
    socket.broadcast.emit('player_connect', {playerId: socket.playerId});
    socket.emit('player_id', {playerId: socket.playerId});

    for (var i = 0; i < GLOBAL.socketFunctions.length; i++)
        eval("socket.on(GLOBAL.socketFunctions[" + i + "].name,function (data)   { GLOBAL.socketFunctions[" + i + "].action(socket,data); });");
}

app.listen(config.httpsport, "ipaddress", function() {
  console.log('listening on port', config.httpsport);
});

当我运行代码时,SSL证书会出现错误。

This request has been blocked; the content must be served over HTTPS. polling-xhr.js:264

没有socket.io/engine.io请求似乎正在通过,设置DEBUG=socket.io* node server.js似乎没有显示任何有用的内容(与SSL导致的传输失败无关。

我注意到这些问题在SSL上出现了很多问题,但必须在各种论坛和socket.io上尝试过十几个不同的提议解决方案,而且它们似乎都没有用。

这对我来说是一个非常重要的项目,我真的非常感谢任何人都可以提供的任何帮助。

在这个阶段我甚至会为socket.io的东西关闭SSL,只要它保留在网站的其他部分(我们需要添加新的支付系统),但我和# 39;如果可能的话,我更喜欢完整的解决方案。

0 个答案:

没有答案