34

我确信 Wave 不会每毫秒轮询服务器以查明其他用户是否输入了某些内容……那么我如何才能看到其他人在输入时输入的内容?并且不会占用带宽。

4

9 回答 9

38

持久 HTTP,彗星

保持 HTTP 连接处于活动状态并在输入字符时发送字符

* 2014 年编辑:另外,看看 WebSocket 和HTTP/1.1 升级标头。浏览器在 2010 年左右开始实施此功能,因此我将其添加到原始答案中。

于 2009-05-31T16:43:49.063 回答
6

他们可能使用 Web Sockets,也就是服务器发送的事件:http ://www.w3.org/TR/websockets可以在 IETF找到底层协议(作为草案) 。

更新:似乎 WebSockets 还没有任何实现;来自 Google I/O 的视频(转到 11:00)讲述了一个长期存在的 HTTP GET 请求。

于 2009-06-03T09:06:21.007 回答
4

GWT 中的服务器推送

服务器推送是等待、响应、关闭、重新打开的范例:

  • 等待:当 GWT 代码向您的服务器调用一些您还没有的数据时,冻结(等待)

  • 响应:一旦请求的数据
    可用,就用它来响应

  • 关闭:然后,关闭连接。

  • 重新打开:一旦您的 GWT 代码收到响应,立即打开一个新连接以查询下一个事件。

于 2009-08-17T21:29:25.913 回答
3

观看视频Google Wave:在第 55 分钟左右由 GWT 提供支持(接近尾声)

问:你如何实现持久连接,长期存在的 http 连接

A:未来计划:HTML5 Web Sockets。长期。这就是我们目前使用的。

问:有没有可以下载和玩的平台或库?

答:不确定。不要这么想

PS:他是这么说的。对我来说,这没有多大意义(“未来计划”与“目前使用”)。任何以英语为母语的人都可能想验证我是否正确转录?

于 2009-06-17T17:50:53.077 回答
1

纯粹的猜测,但它可以使用HTML 5 规范中的服务器端 DOM事件吗?

于 2009-06-05T08:35:24.857 回答
1

WebSockets 的全部原因是让浏览器保持一个对服务器开放的双向套接字,以便可以使用实时通信。当有人在另一端打字时,在 wave 客户端中,它会触发一个发送到服务器的事件,然后服务器会查看谁也应该接收该事件并将该事件传递给他们,在这种情况下是键入的字母。

WebSocket 和 Comet 是不同的。

格兰维尔

于 2009-11-23T15:11:27.850 回答
0

未来可能是现在的彗星 websocket。因为它可以在 Firefox 3.5 中运行,并且根据我的阅读,websocket 仅在 FF 的夜间版本中可用......不过我可能是错的......因为它似乎根本无法在 IE 中运行。

于 2009-08-14T21:30:29.547 回答
0

我花了一些时间对 Google Wave 客户端代码进行逆向工程( http://antimatter15.com/misc/read/的无耻插件,它是用于所有公共 wave 的 google wave 的只读公共客户端,无需机器人或小工具一个月前,当谷歌没有启动升级时,它更有用)。

无论如何,Google 使用 GWT 框架和 Google Closure 库的某些方面(实际上是开源的并记录在案),他们使用 goog.net.BrowserChannel 库,从评论中该库也用于 gmail 中的聊天功能。

http://closure-library.googlecode.com/svn/docs/closure_goog_net_browserchannel.js.html

于 2010-05-24T01:08:31.320 回答
-1

我会假设他们使用 ajax 请求。执行一个异步的 XMLHttpRequest,当服务器有东西要发送给您的浏览器时,注册的 javascript 回调会获取数据并对其进行任何处理。所以基本上浏览器请求下一个事件,处理它,无限重复。

于 2009-11-22T19:04:58.017 回答