Browser 浏览器内聊天是如何工作的?

Browser 浏览器内聊天是如何工作的?,browser,chat,Browser,Chat,只是好奇。在浏览器中聊天到底是如何工作的?通常,如果用户访问某个网页,他/她的浏览器会请求该网页内容。服务器生成输出并将其发送到用户的计算机。但与聊天有点相反(不完全是这样)。不是用户从某个服务器请求聊天信息,而是直接发送聊天信息的服务器。现在,使用“普通”服务器实现这一点非常简单,但服务器将其发送到浏览器直接让我感到困惑。发布消息的部分很清楚,很简单。您只需使用ajax之类的工具将数据发布到服务器。但是,另一台计算机如何立即“知道”已向其写入消息?显然,必须是服务器在写入后立即将其发送到另一台

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

以gmail中的google talk为例。这是怎么回事?它是如何实现的?

有一些,例如,但它们没有得到广泛的实现。大多数情况下,这是通过使用AJAX每隔一小段时间下载自上次下载消息后可用的任何新消息来实现的。

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

是实现这一点的好方法,它使用comet方法。你可以找到一个教程


有人提到ajax轮询,但是。好吧,这只是一个耸人听闻的标题,但comet肯定更合适,可以减少服务器端的压力,使用右后端。

我开发了一个类似于facebook聊天技术的浏览器聊天()。它不是一种推送技术,而是一种比轮询更好的技术,称为ajax长轮询


有关ajax长轮询的更多信息,您可以进行一些研究或访问:

现代聊天应用程序使用SSE(服务器发送的事件:html5的一项功能)向浏览器发送新消息,这是有意义的,我认为它是这样工作的。AJAX请求的间隔很小。然而,在研究google talk(firebug)的工作原理时,我发现当一个朋友给我输入消息时,我的计算机没有发出任何请求,但消息却显示出来。你通常可以强迫它长时间保持连接打开,然后不时地将一条消息滴入管道。但您必须处理超时,然后重新建立连接。它们是否使用服务器发送的事件?这并不能真正回答它的工作原理和实现方式。