2013-10-03 5 views
0

Мои Экспресс приложение прослушивает как HTTP и HTTPS:Как подключить socket.io к нескольким экземплярам HTTPServer?

var app = express() 
    , srv = http.createServer(app) 
    , ssl = https.createServer({ ... }, app); 

я могу сделать socket.io слушать одного из серверов, но не оба:

var io = require('socket.io').listen(srv); // now what about `ssl`? 

Как я могу сделать один сокет .io прислушиваться к серверам HTTP и HTTPS? Я хочу сделать один вызов io.emit(...), который будет отправлять сообщения клиентам, подключенным как на HTTP, так и на HTTPS.

+0

Просто быстро догадайтесь, можете ли вы сделать 'io.addServer (ssl)'? - Точно такой же вопрос в группе Google может помочь: https://groups.google.com/forum/#!topic/socket_io/eQkQLTexeBk – tymeJV

+0

@tymeJV: Нет. Существует 'io.addListener', но это просто псевдоним' io.on'. Прокси (предложение этой нити) не является вариантом. – josh3736

+0

сделать обертку? –

ответ

0

Вот одна вещь, которую вы можете попробовать на основе чтения источника (непроверенные):

https://github.com/LearnBoost/socket.io/blob/64f6b244b6bd79880ba2e0ba00778a2309b39d0b/lib/index.js#L127

var engine = require('engine.io'); 
var httpsEIO = engine.attach(server.https, {path: '/socket.io'}); 
server.ws.bind(eio); 

или в 0,9-земли вручную дублировать эти привязок:

https://github.com/LearnBoost/socket.io/blob/64d8f572aa9291889dd766e7b5832fc6f23b32a3/lib/manager.js#L103

+0

Я считаю, что код является частью нереализованного socket.io 1.0 rewrite. Я все еще на 0,9. – josh3736

Смежные вопросы