Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Ajax聊天轮询带宽效率_Jquery_Ajax_Asp Classic_Bandwidth - Fatal编程技术网

Jquery Ajax聊天轮询带宽效率

Jquery Ajax聊天轮询带宽效率,jquery,ajax,asp-classic,bandwidth,Jquery,Ajax,Asp Classic,Bandwidth,我已经编写了一个小型web应用程序,它基本上是浏览器中一个JQuery支持的聊天客户端,为了获取帖子,我正在使用AJAX请求轮询服务器,然后添加任何新的回复,我担心在不失去实时感的情况下尽可能提高效率 我看不出有任何可能中断的方式,所以我每5秒轮询一个页面,如果没有新的帖子,该页面将不返回任何内容,以便在空闲时关闭数据传输,如果它确实有一条消息,那么队列中的顶部消息将被发送出去,我将在Ajax请求完成后再次检查,直到消息队列为空 关于尽可能降低带宽或其他可能的实现方法,还有其他建议吗?我认为对

我已经编写了一个小型web应用程序,它基本上是浏览器中一个JQuery支持的聊天客户端,为了获取帖子,我正在使用AJAX请求轮询服务器,然后添加任何新的回复,我担心在不失去实时感的情况下尽可能提高效率

我看不出有任何可能中断的方式,所以我每5秒轮询一个页面,如果没有新的帖子,该页面将不返回任何内容,以便在空闲时关闭数据传输,如果它确实有一条消息,那么队列中的顶部消息将被发送出去,我将在Ajax请求完成后再次检查,直到消息队列为空


关于尽可能降低带宽或其他可能的实现方法,还有其他建议吗?

我认为对于聊天应用程序,您可以使用

反向Ajax指的是Ajax设计 使用长寿命HTTP的模式 连接以实现低延迟 web服务器与服务器之间的通信 浏览器。基本上,这是一种 将数据从客户端发送到服务器和 推送服务器数据的机制 返回浏览器

此服务器-客户端通信需要 两种形式之一:

* Client polling, the client repetitively queries (polls) the
服务器并等待答复。 *服务器推送,保持服务器和客户端之间的连接 打开时,服务器会在 可用

反向Ajax描述了 这两种方法的实施 模型,或两者的组合。这个 设计模式也称为Ajax 推送、全双工Ajax和流媒体 阿贾克斯


Comet是一个简单的javascript类,可以轻松创建跨浏览器Comet(反向Ajax)应用程序。它提供客户端和服务器之间的实时数据传输,并可用于任何服务器端语言

轮询可能不是实现聊天的最佳解决方案-我建议看一看,它可以保持与客户端的开放连接,并从服务器“向下”推送更新,而且也是如此。

我编写了几乎完全相同的应用程序,以便当不同雇主使用严厉的命令时,同事之间的沟通网页过滤

我发现为这些轮询请求传输的数据量很小,很少接近每个登录用户1kb/s,通常更少,因为您只轮询了5s


带宽真的是一个问题,还是你过早地优化了带宽?

为了配合msparer的回应,这里有一篇关于Comet消息速率的博客文章,并对聊天应用程序的这种技术进行了基准测试:


如果您决定不使用COMET方法,那么我会和您一样做,除非队列包含多条消息,然后它们会同时发送。这样,您只需每5秒进行一次投票,而且不超过(也不少于)。当然,在100人连接的情况下,这仍然会导致每秒20个请求,因此您应该尝试优化服务器端,使每个请求占用尽可能少的服务器资源(CPU/RAM/时间)。我是你的朋友


不过,我不会担心带宽问题,因为聊天信息通常很短,您的请求也很小。

JQuery还有一个反向ajax(Comet)实现,因此使用moo Comet可能不如Baxter使用JQuery那么方便(请参阅我的答案中的链接),谢谢,回答很好,但我更喜欢一个JS框架。“你是不是过早优化了?”该死的失败了。有人知道Stack Overflow在你输入自己的答案时是否使用轮询来查找更新,比如“添加了2个新答案-单击此处显示它们”吗?或者它使用了像comet这样的“推送”系统?