gpt4 book ai didi

javascript - 更快的轮询频率会让我的页面陷入困境吗?

转载 作者:行者123 更新时间:2023-11-28 09:56:56 27 4
gpt4 key购买 nike

所以我有一个 Rails 应用程序(在这种情况下似乎无关紧要,但无论如何我都会提到它)。这是一种聊天室应用程序。

为了了解哪些用户当前在聊天室中,我一直在使用 Javascript 轮询。

就这么简单

$(function() {
setTimeout(updateUsers, 15000);
});

其中 updateUsers 只是调用 AJAX get 请求来提取当前在聊天室中的用户数组。

这是我的问题:15 秒等待轮询的时间相当长。在没有性能问题的情况下,我应该多久执行一次?显然这取决于很多因素,但我想听听这些因素。我见过很多关于在聊天室中接收消息的类似问题,但还没有关于用户列表的问题,这就是我问这个问题的原因。

最佳答案

这取决于很多因素,例如您的基础设施、预期用户数量等。即使我们有这些数字,也很难判断什么是合适的超时。

如果您只发送一个包含用户列表的简单 JSON 数组,我会说尝试 3-5 秒的延迟并从那里进行检查。这是一个过早优化的问题 - 您正在尝试解决您尚未遇到的问题。

但是,还有另外两种可能的解决方案:

您只能发送差额。当您轮询时,您会返回一条消息,说明自上次轮询以来哪些用户已连接以及哪些用户已离开。这需要某种服务器跟踪,但可以做到。

另一个解决方案是根本不使用轮询,而是使用更现代的技术,例如 WebSockets/Long-polling。这些将允许服务器本身向您的客户端发送消息。因此,您可以在他们连接时向他们发送初始列表,并在每次其他人连接/离开时向他们发送一条最小消息。在 Node 环境中,一个很好的解决方案是 Socket.IO 。我不太喜欢 Ruby,所以我不知道是否有人做过类似的事情,但如果有人将整个事情移植到 Rails 上,我不会感到惊讶。四处搜索,我相信您会找到适合您需求的东西。

关于javascript - 更快的轮询频率会让我的页面陷入困境吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9844279/

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