gpt4 book ai didi

javascript - javascript 聊天客户端的服务器轮询间隔

转载 作者:可可西里 更新时间:2023-11-01 02:23:02 25 4
gpt4 key购买 nike

我正在为我的网站构建一个基本的小型 AJAX shoutbox/chat,但我不确定如何实现服务器轮询。

这是我想到的基本程序流程:

  1. 用户来到页面并显示最近 10 条消息
  2. 要获取其他人发送的消息,客户端 javascript 将请求带有时间戳参数的 URL(设置为客户端收到的最后一条消息的值)
  3. 服务器返回自该时间戳以来的所有消息(最多 10 条)。

唯一的问题是轮询服务器的频率。显然它应该在每次添加新消息时进行轮询,但是当您只是阅读其他人的消息时它需要自动更新。

是不是应该有时间限制?例如:每 10 秒一次。或者,它应该根据使用情况而有所不同吗?例如:5 秒后检查。如果没有消息,请再过 10 秒不要查看。如果仍然没有新消息,请在 15 秒后检查,然后 20 秒,最多每 30 秒检查一次。每次检测到新消息时,将您的计时器重新设置为 5 秒,然后重新开始。

考虑到我们可能有数百名用户同时在线,我只是担心给服务器带来不必要的压力。

...还是我弄错了整件事?有没有更好的方法来实现基本的 JavaScript 聊天?

最佳答案

您可能想查看所谓的 Comet。编程技术将信息流式传输给您的用户,而不是让客户端轮询服务器。这实际上是一系列技术,其中一些技术可能比其他技术更好,具体取决于具体情况,例如您使用的是哪种服务器以及您需要哪种客户端兼容性。

如果您的服务器一次可以处理大量打开的连接(例如,它不会为每个连接使用整个线程或进程,例如 nginx 或基于 erlang 的服务器),您可能希望使用长轮询技术,一旦收到一条消息,客户端立即请求另一条消息。如果没有可用的消息,服务器只是保持连接打开,可能偶尔发送虚拟数据作为保持事件状态,直到消息可用。

关于javascript - javascript 聊天客户端的服务器轮询间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/676098/

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