【发布时间】:2014-04-13 16:34:25
【问题描述】:
我写了一个网页,其中有一个用户 cmets 的区域。
任何经过身份验证的用户都可以发表评论。
由于许多用户几乎可以同时发布 cmets,我希望 cmets 列表能够自动刷新。 因此,我考虑使用 WebSockets。
我的想法是关于这个用例的一个好的/最佳实践:
一旦发表评论,WebSockets 进程是否应该读取数据库中的当前 cmets 列表并发送包含所有新 cmets 的 Json 响应?这将允许客户端直接在 DOM (JS) 上附加新的 cmets。
或者 WebSocket 是否应该只检查数据库(或队列,如果使用消息队列(例如 Redis、RabbitMQ 等))并表现得就像:“嘿,我有新的 cmets,如果你想查看它们,请单击此处!”。此解决方案只会发出新 cmets 存在的信号,而不会将所有这些 cmets 带到客户端。检索事件的工作流将由客户端参与(例如通过单击此句子),例如使用传统的 Ajax 方向:客户端 => 服务器。用户很可能发表评论,然后导航到网站的另一个页面。因此,包含全新 cmets 的 websocket 响应将毫无用处。一个简单的通知将成为可能,因为大多数已知网站都使用“+1”计数器或与“cmets”场景更相关:“1 个新评论可用”。
我应该选择哪种方式?
【问题讨论】:
-
这篇文章的结论很有意思:bennadel.com/blog/…
标签: javascript html architecture websocket socket.io