使用一组有限的工具在客户端之间同步数据(没有 websockets,线程数量有限)

Syncing data across clients with a limited set of tools (no websockets, limited number of threads)

我想达到的目标

我需要实现某种订阅事件的方法。确切地说,人们可以在 tables 中锁定单元格(更多用户可以同时查看相同的 table),并且当其他人锁定单元格时需要更新 tables。 (因此用户不会尝试多次锁定同一个单元格。)我至少有 45-50 个用户。 (有多个 table(在数量有限的单独网页上,加载了 AJAX - 使用我在服务器端编码的 JSON 传输。)

限制、资源和想法

我有以下想法:

使用频繁的 运行 CRON 作业我可以生成 json 字符串并将其写入文件 - 客户端可以定期下载 json 文件并更新 table 如果有变化。

我知道这听起来不太优雅,所以我决定在实施上述计划之前四处询问。

感谢任何ideas/help, 巴林特

由于服务器端存在这些限制,您可能只想在客户端中使用轮询。客户端将发出 ajax 请求请求更新计时器。服务器会在每次收到 ajax 调用时向客户端提供最新状态。您将必须根据要支持的规模(规模越大意味着轮询间隔时间越长)以及规模对服务器端限制的影响手动调整客户端轮询的频率。

客户端轮询不利于带宽使用,因此您必须量化您可以在那里使用的带宽(测量 N 个客户端以特定间隔轮询使用的带宽并相应地调整轮询频率)。

显然,更现代的技术(例如持续连接的 webSockets 甚至长轮询)将为您提供更好的响应能力和更低的带宽使用率,但由于您的服务器端限制,您似乎已经排除了这些技术。首选解决方案是修复服务器端限制。如果你使用 socket.io,它会自动回退到不支持 webSockets 的客户端的长轮询。