gpt4 book ai didi

Node.js 最佳 socket.io 实践(请求-响应与广播)

转载 作者:太空宇宙 更新时间:2023-11-04 02:37:36 26 4
gpt4 key购买 nike

我是 node.js/socket.io 的新手,可能没有以正确的方式提出这个问题,甚至没有提出正确的问题。

我的应用程序的目标是从 API 获取数据,将其转换为 JSON 对象并将其存储在 mongodb 中。然后在需要时向客户端提供数据。我考虑过两种可能性,并想知道最佳实践是什么。我的第一个想法是经常向所有连接广播数据库中的所有条目。另一个想法是让客户端请求服务器所需的数据,然后将请求的数据发送到客户端。

数据库中存储的数据约为 100 条。数据大约每 30 秒从 API 更新一次。如果选择方法 1,数据将每 5-10 秒广播一次。如果选择方法 2,则将在请求时发送数据。客户端会遇到不同的情况,并非始终需要所有数据。客户端必须经常请求数据以确保数据是“新鲜的”。

所以我的问题是,最佳实践是什么每 x 秒广播一个大块或在请求时广播较小的 block 。

抱歉,如果这没有意义。感谢您抽出时间。

最佳答案

DDP 协议(protocol)绝对是一种有趣的方式,但它可能有点过头了。更简单的解决方案是充分利用方法 1 和 2。如果延迟不是那么重要并且您有空闲带宽,则可以在新数据到达时向所有客户端广播“更新”消息。客户端考虑更新是否影响它并下载它需要的数据。

稍微复杂且更有效的方法是订阅程序,与 DDP 非常相似。对于较小的项目,您可以花一段时间自己实现。这是它的工作原理:

  • 客户端订阅一 block 数据。
  • 服务器将此 block 发送给客户端并记住哪些客户端订阅了哪些内容。
  • 如果 block 被更新,服务器将遍历订阅列表并将新数据发送给订阅者。
  • 客户端可以随时通过发送特殊消息、断开连接(或选择订阅不同的 block )来取消订阅。

我所说的 block 是指以任何方式识别某些数据。它可以是记录 ID、时间范围、过滤器或任何对您的项目有意义的内容。

关于Node.js 最佳 socket.io 实践(请求-响应与广播),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20897381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com