我是一名经验不足的开发人员,我刚开始学习node.js socket.io。
我想为每个用户发出通知,如果他们的帖子中有帖子或有人回复(评论过)用户的帖子,就像在fac * book / go * gle + notification中一样。
我在这里按照教程http://www.codesizzle.com/node-js-and-socket-io/
我将它与laravel4和redis组合作为将消息/ notif发布到redis的处理程序,然后nodejs将侦听redis,如果有post / event,则使用socket io将其发送到用户的浏览器
根据我的理解,例如:
实现这一目标:
我的问题在我的声明中“userB订阅了自己的频道,也许正在使用他的ID。”这意味着userB将订阅频道notif-channel-{userId}
- > notif-channel-967
,如果我有数千名用户,那么我将有数千个不同的频道,可能从notif-channel-1
到notif-channel-50000
,
会成为问题吗?
最佳做法是什么?
流量是否正确?
三江源
注意:抱歉英文不好。
更新
在阅读了更多文章后,我想我将流程改为:
注意我在上述流程中没有涉及redis,反馈是什么?
答案 0 :(得分:3)
使用套接字执行此操作是一种非常复杂的处理方式。这是可能的,但您真正需要做的是从该页面(客户端)添加定时发布请求以检查新评论。
那时你真正需要的就是数据库。 From,To,Date,Message。
使用套接字,您必须为每个拥有“墙壁”的用户设置一个频道,任何正在查看“人员墙”的人都必须订阅它,如果是很多人,那么你在需要扩展时会出现问题。这意味着将redis与sockets.io一起使用。
虽然这样做很“酷”,但在我看来这太过分了。