gpt4 book ai didi

javascript - 同步多个 Socket.io 客户端

转载 作者:可可西里 更新时间:2023-11-01 11:21:48 24 4
gpt4 key购买 nike

我正在构建一个应用程序,它在前端使用 Angular.js,在后端使用 Express 上的 Socket.IO 和 Redis。

套接字的基本用法是允许一种类型的用户将项目推送到由第二种类型的用户组使用的列表。

一个简单的例子:学生可以将消息推送到类(class)列表中,只有本类的老师可以看到该列表。

我正在尝试在不同时间连接的多位教师之间同步列表,列表存储在 Redis 存储中,我想知道同步客户端的正确方法是否:

一个。在每次更新时发送列表 - 省去了必须在客户端中管理同步和潜在的不匹配的需要。

B.仅在连接时发送列表并对连续事件应用增量更新。

我确信这在过去已经得到解决,因为它似乎是套接字通信的一个非常基本的问题,但我无法找到明确的答案。

谢谢!

最佳答案

如果列表不是特别大,那么我认为您想使用一些简单的东西。我能想到的最简单的事情如下:

  1. 学生对列表进行更改并将消息发送到服务器(可以是 ajax 调用,不一定是网络套接字)。

  2. 服务器接收消息并将其放入适当的列表存储。

  3. 服务器然后查找任何监控该列表的客户端并向它们发送更新消息。

  4. 教师连接到服务器。教师正在监控的任何列表都会完整发送给教师,他们会订阅这些列表的更新。

这样,您实际上就不会进行同步,这大大简化了事情 - 您只是在进行下载列表,然后进行增量更新。只有一家主店。如果客户下线,他们只会得到一份新的列表副本,并在他们重新上线时重新订阅更新。避免同步使整个解决方案变得更加简单。这是假设数据不是特别大,因此根据需要获取列表的新副本是可行的。

如果您确实想要进行同步,那么一种相当简单的技术是在服务器上维护商店的一个主副本,并让每个找零交易硬币都有一个单调递增的交易 ID。然后,每个同步的副本可以只跟踪他们同步的最后一个交易 ID 并请求从那时起的所有交易。数据存储需要将所有更改作为事务进行跟踪(通常通过为每个事务或某些数据库中的某个功能写入事务日志),以便可以为正在同步的任何客户端回放任何给定的一组事务。

关于javascript - 同步多个 Socket.io 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26130465/

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