我正在为我的网站构建一个基本的小AJAX shoutbox/chat,但我不确定如何实现服务器轮询.
这是我正在考虑的基本程序流程:
唯一的问题是轮询服务器的频率.显然,每次添加新消息时都应该进行轮询,但是当您只是阅读其他消息时,它需要自动更新.
它应该是一个设定的时间限制吗?例如:每10秒钟.或者,它会根据使用情况而有所不同吗?例如:5秒后检查.如果没有消息,请不要再检查10秒.如果仍然没有新消息,请检查15秒,然后是20,最多可能每30秒检查一次.每次检测到新消息时,都会将计时器重置为5秒并重新开始.
考虑到我们可以在线同时拥有数百名用户,我只关心在服务器上施加不必要的压力.
......或者我弄错了什么?有没有更好的方法来实现基本的JavaScript聊天?
Brian 描述的 Comet 是一项很好的技术,但需要服务器上的会话支持,这可能比您想要实现的简单聊天框更先进。
实现轮询间隔的最佳方法是想象您有一个聊天窗口,您可以最小化该窗口以执行其他操作,或者打开该窗口以查看是否有新消息。当您正在进行对话时,您会经常切换到该对话(轮询)。如果你有一段时间没有收到任何消息,你就会开始变得越来越稀少,直到你偶尔查看一下。
假设您不需要进行实时打字,您可以在活动高峰时每 3 秒左右轮询一次,如果 5-10 次轮询没有任何结果,则开始增加间隔(也许每次都加倍) )直到达到 30-60 秒。获取消息应将轮询间隔重置回几秒,而发送消息应立即轮询,但可能不需要影响轮询的频率。
| 归档时间: |
|
| 查看次数: |
7512 次 |
| 最近记录: |