我有一个 socket.io
服务器,其代码如下:
var sticky = require('sticky-session'); sticky(function() {
var app = require('http').createServer(handler);
function handler (req, res) {
res.writeHead(200, {
"Access-Control-Allow-Origin": "*"
});
return res.end('pong');
}
var io = require('socket.io')(app, {'origins' : '*' + config.application.hostname + '*:*'});
const newmessagesConnections = io.of('/new-messages');
newmessagesConnections.on('connection', function (client) {
.....
});
const callingsConnections = io.of('/callings')
callingsConnections.on('connection', function (client) {
.....
});
return app;
}).listen(config.application.port, function() {
console.log('server started on ' + config.application.port + 'port');
});
它与 WS 协议(protocol)配合得很好,但我也想支持 WSS 协议(protocol)。 当我使用粘性 session 时,是否可以同时使用 WS 和 WSS 协议(protocol)?
来自sticky-session
文档:
Sticky-sessions module is balancing requests using their IP address. Thus client will always connect to same worker server, and socket.io will work as expected, but on multiple processes!
但是我希望能够通过 WS 和 WSS 建立开放连接,但我不知道由谁来更新我的服务器以保持 WS 和 WSS 连接。
最佳答案
在客户端代码中,当您创建套接字连接时,请尝试以下操作:
if(location.protocol==='https:'){
socket = io.connect( 'wss://' + location.hostname + '/', {
//options here like:
'forceNew':true
});
}
else{
socket = io.connect( 'ws://' + location.hostname + '/', {
//options here like:
'forceNew':true
});
}
关于node.js - 如何创建保持 WS 和 WSS 连接的 soket.io 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34788130/