Heroku SailsJS如何处理推送消息到具有更多dyno';在希罗库?
我有一个关于在Heroku上扩展SailJS应用程序的问题 设置:Heroku SailsJS如何处理推送消息到具有更多dyno';在希罗库?,heroku,push-notification,socket.io,sails.js,kue,Heroku,Push Notification,Socket.io,Sails.js,Kue,我有一个关于在Heroku上扩展SailJS应用程序的问题 设置: (Redis排队系统) 通过套接字io(sailsjs)连接的客户端 2个dyno(每个运行一个SailsJS实例) 这是一种过程 我想自主地运行一个连续的“cron”进程,该进程触发一条推送消息,该消息必须发送到连接的socketio客户端。 我知道正确配置后,套接字连接驻留在Redis中 我使用for nodejs,并触发一个worker来处理该任务。 worker位于SailsJS实例中,能够向连接的套接字客户端发送
- (Redis排队系统)
- 通过套接字io(sailsjs)连接的客户端
- 2个dyno(每个运行一个SailsJS实例)
- 这是一种过程
如何解决这个问题…:-D?为潜在答案提供线索: 看来sails.js的人正在做这个!见: 我希望这些人能够启用“subscribers()”方法,使其以与“message()”相同的方式运行 在我看来,当“message()”方法使您能够向连接到另一个sails实例的客户端发送消息时,方法“subscribers()”应该返回连接到两个sails实例的订阅者(套接字id),或者知道某个实例是否能够知道某个特定的客户端是否已连接,这应该非常好
谢谢 我要做的是订阅一个套接字到它自己的房间(通常房间是用户Id)。这样,您就不需要跟踪套接字id(每个浏览器连接都会更改)。当我的应用程序的任何部分需要与连接“对话”时,它会向房间发出一条消息。这很好,因为它允许具有多个设备的用户接收相同的消息(就像桌面和手机上有Skype一样,您可以互换使用其中任何一种设备进行聊天) 因此,用户A连接到桌面,我将他/她的套接字1235订阅给他/她的房间用户A。如果用户A同时与电话连接,我会向房间用户A订阅插座4567。如果任何工作人员需要发送消息,它会发送给房间用户a。您可以使用socket.io-emitter: 编辑 另外,请记住,Sails具有
广播
功能:
您可以向房间发送消息。如果您的消息是全局的,那么您可以让所有套接字订阅一个全局文件室,任何Sails实例都可以与所有人通信。如果您仍然想跟踪单个套接字,您仍然可以使用我上面的技术,使用sails广播
,而不是socket.io发射器
Heroku Cloud => Cron => Kue (Redis)
=> Dyno 1 (SailsJS instance) => client 1
=> client 2
=> Dyno 2 (SailsJS instance) => client 3
=> client 4
var io = require('socket.io-emitter')({ "host" : REDIS_WEBSOCKET_HOST, "port" : REDIS_WEBSOCKET_PORT });
io.in("userA").emit("message", "Some message");