我想让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;如果可能的话,我更喜欢完整的解决方案。