我正在为一个应用程序设计一个基于Web的聊天功能,这个功能有点像Facebook聊天或gmail内部的谷歌聊天。我想知道是否有人对检查更新的频率有任何建议?每2秒钟?每5秒钟? 10秒钟?
另外,我应该在setTimeout的回调函数中调用setTimeout,还是在ajax更新请求的回调中调用?基本上,它应该是两次通话之间的n秒,还是最后一次请求完成和下一次请求开始之间的n秒?
由于
答案 0 :(得分:5)
我会让它充满活力。确定一些你不想离开的范围,比如2到10秒,然后从某个中点开始,比如5秒。如果您的民意调查总是返回新消息,请将等待时间减少到最小值。如果民意调查开始为空,则向最高点增加。这将在需要时提供响应性和在没有任何进展的情况下让服务器休息时间之间取得公平的平衡。
答案 1 :(得分:5)
您可以使用类似Comet(AKA反向AJAX)的内容来建立持久连接,而不是多次ping服务器。
否则,我会说2-3秒应该是一个很好的范围。任何更低的东西都会给服务器带来不必要的压力,任何更长的时间都会让应用程序感到迟钝。
答案 2 :(得分:1)
您是否研究过event based方法?这样,您将获得实时行为,节省资源并节省您提出智能轮询间隔的需要。
如果由于某种原因你需要使用轮询,我会选择一个短的启动间隔,这个间隔大约是你希望平均发出通知的时间长度的两倍,然后如果有的话会不时增加间隔没有什么新东西可以避免不必要的锤击服务器。虽然总的来说一个好的答案实际上取决于你的系统做什么。
对于聊天,基于事件是进入imho的理想方式。
答案 3 :(得分:0)
但通常会更新。
这意味着您可以分析自己的系统,并确定检查更新与负载的最佳时间。