当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《javascript聊天客户端的服务器轮询间隔》经验,为你挑选了1个好方法。

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

这是我正在考虑的基本程序流程:

    用户进入页面并显示最后10条消息

    要获取其他人发送的消息,客户端javascript将请求带有timestamp参数的URL(设置为客户端收到的最后一条消息的值)

    服务器返回自该时间戳以来的所有消息(最多10个).

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

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

考虑到我们可以在线同时拥有数百名用户,我只关心在服务器上施加不必要的压力.

......或者我弄错了什么?有没有更好的方法来实现基本的JavaScript聊天?



1> Brian Campbe..:

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

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

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有