我想在网站中实现基于websocket的推送通知。我已经在SO和谷歌上进行了搜索,但我的问题有点不同
我的用例:
当userB回复userA发布的评论时,userA将收到推送通知,其中包含文章/评论的链接(类似于SO)
我的研究:
在网络上,人们似乎同意(就可扩展性而言)最好限制websocket频道的总量。这导致每个用户1个频道(=每个频道只包含1个用户)。为什么?考虑一个群组聊天,其中1个用户可以参与10个或更多讨论 - >这意味着每个用户有10个或更多频道
因此,每个用户1个频道是最佳解决方案(直到现在)。
我打算使用此捆绑包https://github.com/GeniusesOfSymfony/WebSocketBundle
在文档中,有一个关于如何向特定用户https://github.com/GeniusesOfSymfony/WebSocketBundle/blob/master/Resources/docs/SessionSetup.md发送消息的页面。此方法允许您仅在订阅同一频道的所有用户之间向1个用户发送消息。您可以通过将用户的用户名传递给该函数来完成此操作。
这开启了一个新的可能性:只创建一个大频道,所有已登录的用户都订阅了它。创建N个频道INSTEAD,其中N是经过身份验证的用户数。
换句话说,哪个更好:1个频道有1000个用户,1000个频道有1个用户?
答案 0 :(得分:1)
我建议您使用发布/订阅框架,并依赖该框架的实现进行扩展。你似乎正在解决之前已经解决过很多次的问题。搜索ActiveMQ发布/订阅,Kaazing JMS,Kaazing AMQP,Pusher,IBM MQTT / WS等。