套房数量为

时间:2016-07-02 14:52:26

标签: node.js socket.io

假设我们有一个包含大量帖子的应用程序,可以单独查看。单个视图包含对帖子的评论。

我想用套接字实时制作评论系统(所以新评论会立即显示而不会刷新),但我不完全确定如何做到这一点:

  1. 通过查看帖子,用户为特定帖子(post_{id})订阅了一个房间。新评论会播放到这个房间。
  2. 向所有套接字广播new_comment事件并在客户端评估(例如,拥有post_id
  3. 我在第一个想法中看到的问题:

    • 查看多个帖子后,我们订阅了很多房间。我不知道这是不是问题,但感觉有点奇怪。由于标签,我无法取消订阅房间。

    我在第二个想法中看到的问题:

    • 不可能再维护权限。例如,如果您看不到特定的帖子,那么您仍然可以获得new_comment事件,因此可以在没有大量工作的情况下阅读评论(开发者控制台>听取事件和{{ 1}}其数据> win)。

    或者还有其他可能吗?

1 个答案:

答案 0 :(得分:0)

对于查看帖子的单个视图(带有评论)的每个页面,它应该完全正常,可以放在特定于该帖子的房间中。这是您的服务器添加到房间的连接,因此它可以确保只对能够查看该帖子的用户执行此操作。

然后,当新评论到达帖子时,您只需向关联的房间广播,只有那些已经在查看该帖子的人才会收到该消息。

当网页离开或关闭标签时,页面已打开的任何webSocket连接都会自动关闭,当它关闭时,socket.io会自动将其从任何房间中删除,这样你就不会不用担心这种清理程度。

我建议您从帖子ID中获取房间名称,以便为房间命名。

  

我在第一个想法中看到的问题:

     

查看多个帖子后,我们订阅了很多房间。我不   知道这是否有问题,但感觉有点奇怪。我不能   由于标签而取消订阅会议室。

这应该不是问题。每个标签只能查看一个帖子,因此只能订阅一个帖子的评论通知。当选项卡被导航离开或关闭时,socket.io连接将自动关闭并从其所在的任何房间中移除。