2016-01-14 36 views
2

我有一個socket.io服務器代碼這樣的:如何創建將保持WS和WSS連接的soket.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協議的工作很好,但我想支持WSS協議了。 當我使用粘性會話時,是否可以同時使用WS和WSS協議?

sticky-session DOC:

粘性的會話模塊使用平衡的IP地址的請求。 因此,客戶端將始終連接到同一個工作服務器,並且socket.io 將按預期工作,但在多個進程中工作!

但我想做可能性通過WS和WSS打開連接,我不知道誰來更新我的服務器,以保持WS和WSS連接。

回答

2

在您的客戶端代碼,當您創建套接字連接,試試這個:

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 
    }); 
} 
+0

我的關於服務器的問題,因爲我用粘會議。 – Dmitro

+0

@Dmitro哦,對不起。您能否添加更多的細節以便更容易地幫助? – Blubberguy22

+0

我可以啓動兩個服務器http和https,但我將在socket.io中有不同的會話。 – Dmitro

相關問題