我正在为一个应用程序设计一个基于 Web 的聊天功能,该功能类似于 gmail 内的 facebook 聊天或 google talk。我想知道是否有人对它应该多久检查一次更新有任何建议?每2秒?每 5 秒?10秒?
另外,我应该在setTimeout的回调函数中调用setTimeout,还是在ajax请求更新的回调中调用?基本上,调用之间应该是 n 秒,还是上一个请求完成和下一个请求开始之间的 n 秒?
谢谢
我正在为一个应用程序设计一个基于 Web 的聊天功能,该功能类似于 gmail 内的 facebook 聊天或 google talk。我想知道是否有人对它应该多久检查一次更新有任何建议?每2秒?每 5 秒?10秒?
另外,我应该在setTimeout的回调函数中调用setTimeout,还是在ajax请求更新的回调中调用?基本上,调用之间应该是 n 秒,还是上一个请求完成和下一个请求开始之间的 n 秒?
谢谢
我会让它充满活力。确定一个你不想超出的范围,比如 2 到 10 秒,然后从某个中间点开始,比如 5 秒。如果您的民意调查总是返回新消息,请将等待时间缩短至最短。如果民意调查开始返回空白,请增加至最大值。这将使您在需要时的响应能力和在没有任何事情发生时让您的服务器休息之间取得公平的平衡。
您可以使用Comet(AKA 反向 AJAX)之类的东西来建立持久连接,而不是多次 ping 服务器。
否则,我会说 2-3 秒应该是一个不错的范围。任何更低的值都会给服务器带来过度的压力,而任何更长的值都会让应用程序感觉迟缓。
您是否研究过基于事件的方法?这样,您将获得实时行为、节省资源并节省您提出智能轮询间隔的需要。
如果出于某种原因您需要使用轮询,我会选择一个较短的开始间隔,这大约是您期望通知平均发生的时间长度的两倍,然后如果没有什么新东西,则不时增加间隔避免不必要地敲击您的服务器。尽管总的来说,一个好的答案实际上取决于您的系统的功能。
对于聊天,基于事件是实现恕我直言的理想方式。
但是它经常更新。
这意味着您可以分析自己的系统,并确定检查更新与负载的最佳时间。