首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EM-WebSocket或Goliath的多个订阅者

使用EM-WebSocket或Goliath的多个订阅者
EN

Stack Overflow用户
提问于 2012-07-24 10:38:37
回答 1查看 657关注 0票数 1

因此,我正在尝试设置em-websocket (或可能的Goliath),以便用户可以到达不同的路由,从而仅订阅该频道,例如:

代码语言:javascript
复制
example.com/channel_1

在那里打开的浏览器将只接收发布到channel_1的消息,实际上在这一点上,它不一定是这样的路由,我满足于使用参数。所以我使用AMQP,它有一个直接交换的概念,以及路由关键字。有没有类似于websockets的东西?

我有一个Goliath服务器在工作,但问题是,因为它使用共享端点,我认为所有使用websocket连接打开的浏览器都收到相同的消息,以下是我正在做的:

代码语言:javascript
复制
channel.queue(params['channel'], :auto_delete => true).subscribe do |payload|
  config['channel'].push(payload)
end

所以这个例子使用了AMQP,我仍然想使用它,但我认为问题在于每个客户端都在重新实例化EM::Channel.new,然后消息被推送到该通道,我只是不明白如何让多个客户端订阅不同的通道。

任何帮助我理解这一点或指导我到一个更合适的设计模式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-07 13:34:04

如果您的通道是预定义的,那么您只需在服务器的配置文件中为每个通道执行一个EM::Channel.new,然后客户端将通过适当的通道发送/接收消息。

如果通道是由用户定义的,那么你需要在你的配置中设置一个哈希(或其他东西)来存储你的通道,当客户端连接时,检查配置哈希以查看通道是否存在,如果不存在,则对其执行EM::Channel.new并继续。如果存在,请使用现有通道。

在第二种情况下,您将需要在客户端断开连接时执行一些逻辑操作,以处理在所有客户端都已离开时关闭通道的问题,否则将出现内存泄漏。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11623352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档