浏览器内聊天如何工作?

时间:2009-08-02 18:55:12

标签: browser chat

好奇。浏览器中的聊天工作究竟如何?通常,如果用户访问网页,则他/她的web浏览器请求页面内容。服务器生成输出并将其发送到用户的计算机。但是通过聊天,它有点相反(完全不是)。这不是用户从某个服务器请求聊天消息,而是直接发送它的服务器。现在使用“普通”服务器实现这一点非常简单,但服务器将其发送到浏览器的事情让我感到困惑。发布消息部分都很清楚,很简单。您只需将数据发布到服务器,例如ajax或其他东西。但是,另一台计算机如何立即“知道”消息已写入其中?显然必须是服务器一写完就将其发送到另一台计算机。但不知何故,这在我的大脑中无法计算。在我的大脑中,浏览器只会请求它们,它不仅仅是获取它们。你究竟是怎么做到的?

以gmail中的google talk为例。这是如何运作的?它是如何实现的?

6 个答案:

答案 0 :(得分:11)

有一些push technologies,例如Comet,但它们并未得到广泛实施。大多数情况下,这是通过polling以一段小间隔使用AJAX完成的,并下载自上次下载的消息以来可用的任何新消息。

答案 1 :(得分:7)

查看Comet

答案 2 :(得分:4)

Orbited是实现此目的的好方法,它使用彗星方法。您可以找到教程here

有人提到了ajax民意调查,但comet is always better than polling。嗯,这只是一个耸人听闻的标题,但彗星肯定更合适,并且可以减少服务器端的压力,使用正确的后端。

答案 3 :(得分:2)

它使用AJAX - 在GMail用户的浏览器上运行的客户端javascript发送和接收来自Google服务器的消息,并将它们写入浏览器窗口 - 无需重新加载所需的页面。

答案 4 :(得分:1)

我开发了类似于Facebook聊天技术的浏览器聊天(http://chatsign.com)。它不是一种推动技术,而是一种比民意更好的东西,它称之为ajax长期民意调查。

有关ajax长轮询的更多信息,您可以进行一些研究或访问:http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery

答案 5 :(得分:0)

现代聊天应用程序使用SSE(服务器发送事件:html5的一项功能)向浏览器发送新消息