Node.js和Socket.io:在ssl协议切换上永远待定

时间:2016-03-28 13:11:53

标签: node.js websocket socket.io

当我想通过客户端连接到节点服务器时,协议切换将永远挂起。有人能告诉我为什么会这样吗?

这是服务器端代码:

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

var options = {
    key: fs.readFileSync('*******'),
    cert: fs.readFileSync('*******'),
    passphrase: '*******',
    rejectUnauthorized: false
};

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

io.sockets.on('connection', function (client) {

    client.on('join', function() {

        //
    });
});

这是客户端的:

var baseURL          = getBaseURL();
var socketIOPort     = 3700;
var socketIOLocation = baseURL + socketIOPort;
var socket           = io.connect(socketIOLocation, {secure: true,   rejectUnauthorized: false});

function getBaseURL()
{
    return (location.protocol + "//" + location.hostname + ":" + location.port);
}

我在localhost上使用自签名证书。

Mozilla表示连接已中止并尝试重新连接,Chrome称其状态为“101切换协议”,时间(延迟)为“待处理”。

1 个答案:

答案 0 :(得分:1)

getBaseURL()已包含一个端口(location.port),但您会附加到该3700。从location.port中移除getBaseURL(),这应解决该特定问题。

相关问题