当我想通过客户端连接到节点服务器时,协议切换将永远挂起。有人能告诉我为什么会这样吗?
这是服务器端代码:
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切换协议”,时间(延迟)为“待处理”。
答案 0 :(得分:1)
getBaseURL()
已包含一个端口(location.port
),但您会附加到该3700
。从location.port
中移除getBaseURL()
,这应解决该特定问题。