【问题标题】:How do I attach socket.io to multiple HTTPServer instances?如何将 socket.io 附加到多个 HTTPServer 实例?
【发布时间】:2013-10-03 14:51:37
【问题描述】:

我的 Express 应用同时侦听 HTTP 和 HTTPS:

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

我可以让 socket.io 监听其中一个服务器,但不能同时监听两个:

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

如何让单个 socket.io 实例同时监听 HTTP 和 HTTPS 服务器?我想做一个io.emit(...) 调用,它将消息发送到连接在 HTTP 和 HTTPS 上的客户端。

【问题讨论】:

  • 只是快速猜测,你能做io.addServer(ssl)吗? -- 在 Google 小组上完全相同的问题,可能会有所帮助:groups.google.com/forum/#!topic/socket_io/eQkQLTexeBk
  • @tymeJV:不。有一个io.addListener,但这只是io.on 的别名。代理(该线程的建议)不是一种选择。

标签: javascript node.js socket.io


【解决方案1】:

根据阅读源代码(未经测试),您可以尝试以下一件事:

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-land 中手动复制这些绑定:

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

【讨论】:

  • 我相信代码是未发布的 socket.io 1.0 重写的一部分。我还在 0.9 上。
猜你喜欢
  • 2021-11-26
  • 2020-09-02
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多