node.js - 如何创建保持 WS 和 WSS 连接的 soket.io 服务器?

标签 node.js websocket socket.io sticky-session

我有一个 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/

相关文章:

javascript - 从 Node.JS 中的平面集中提取分层数据集

javascript - 我正在尝试通过 setInterval() 重新渲染我的哈巴狗模板。这可能吗?

node.js - Socket.IO send() 不起作用

node.js - Express,为每个用户保留变量

javascript - 使用 Mongoose 创建数据库模型

android - 如果我已经有一个 .sql 数据库,我可以使用 Apache 而不是 Redis Sever 将数据库连接到 Android 应用程序吗?

node.js - 如何重启iisnode?

javascript - Chrome Websockets CORS 政策

websocket - 打破异常:预期为字符串

javascript - 服务器响应后处理 oncopy 事件