38

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

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

4

6 回答 6

11

有一些推送技术,例如Comet,但它们没有被广泛实施。大多数情况下,这是通过使用 AJAX 以某个小间隔轮询并下载自上次下载消息以来可用的任何新消息来完成的。

于 2009-08-02T18:58:05.613 回答
7

看看彗星

于 2009-08-02T18:58:31.947 回答
4

Orbited是实现这一点的好方法,它使用彗星方法。您可以在此处找到教程。

有人提到 ajax polling,但是comet 总是比 polling 好。好吧,这只是一个耸人听闻的标题,但彗星肯定更合适,并且可以减少服务器端的压力,并具有正确的后端。

于 2009-08-02T19:05:24.833 回答
2

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

于 2009-08-02T19:01:15.293 回答
1

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

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

于 2012-07-21T15:04:15.510 回答
0

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

于 2014-05-30T21:43:01.497 回答