node.js - 如何在 restify 上扩展 socket.io?

标签 node.js redis socket.io scalability restify

我正在尝试扩展在 restify 上运行的 socket.io。我能够将其设置为在一个 nodejs 实例上运行良好。现在,当我将我的应用程序扩展到四个实例时,应用程序生态系统崩溃了(即事件在客户端之间没有正确同步)。

我正在寻找有关如何使用 restify 设置粘性 session 的示例。或者,现在是如何完成的?

sticky session 的更新是一年前的:Socket 1.0 Update / Scalability .

我找到了这两个关于设置的博客,但它们都使用 Express,而且也是一年多前写的:

因为我正在制作 headless API,所以我认为不应该使用 Express。这是推荐的思维方式还是我应该只使用 Express?

package.json:

  "dependencies": {
    "hiredis": "^0.4.1",
    "pouchdb": "^4.0.3",
    "pouchdb-upsert": "^1.1.3",
    "redis": "^2.0.1",
    "restify": "^4.0.0",
    "socket.io": "^1.3.7"
  }

如有任何帮助,我们将不胜感激!

最佳答案

Socket.io 只会让您的服务器 <-> 客户端数据在单个实例中同步,因为 Node 是单线程的并且存在于单个 CPU 内核上。要同步多个实例,您需要更高级别的消息管理方法。 Socket.io 推荐 Redis 实例。还有这个 repo 协议(protocol):http://socketcluster.io它为您处理相同的问题。

关于node.js - 如何在 restify 上扩展 socket.io?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32979488/

相关文章:

javascript - 从 jQuery 到 vanilla JS

python - 将数据从 redis 哈希转储到 postgresql 表的更快方法

python - Heroku中的Django Redis连接错误: Error 110 while writing to socket.连接超时

Redis节点不会进入MASTER模式

javascript - 将自定义函数注入(inject) onclick 事件

node.js - 套接字 io 广播在 2 次尝试后停止工作

javascript - Node.js 脚本似乎跳过了 fs.readFile 代码块

node.js - 如何通过 Node.js Bluemix 推送 API 注册设备

javascript - 即使 Node 服务器成功运行,index.html 也不会加载

javascript - Socket.io 房间不工作