【问题标题】:How does the live, real-time typing work in Google Wave?Google Wave 中的实时输入是如何工作的?
【发布时间】:2009-05-31 16:39:23
【问题描述】:

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

【问题讨论】:

标签: http gwt html google-wave


【解决方案1】:

持久 HTTP,Comet

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

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

【讨论】:

  • 它真的使用 Comet,因为它使用 GWT?
  • comet 是一个流行词,它不是任何已定义的框架或技术。你可以用 gwt 实现它,不用 gwt,随你喜欢
【解决方案2】:

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

更新:WebSockets 似乎还没有任何实现;和a video from Google I/O(转到 11:00)谈论一个长期存在的 HTTP GET 请求。

【讨论】:

  • 不知道对用户有这样的限制!我会投票给你,给你更多的代表。
  • 感谢您的投票,我现在编辑了我的答案以包含“多个超链接”,因此实际上链接到 IETF 草案。
【解决方案3】:

Server Push in GWT

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

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

  • 响应:一旦请求的数据是
    有空,回复一下

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

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

【讨论】:

    【解决方案4】:

    在第 55 分钟左右(接近尾声)观看视频 Google Wave: Powered by GWT

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

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

    问:是否有平台或库可供我们下载和使用?

    答:不确定。不要这么认为

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

    【讨论】:

    • 这很令人困惑,因为它有点脱离上下文。答案基本上意味着:是的,我们正在使用挂起请求(又名“彗星”)。未来的计划是在实现可用时迁移到 WebSockets。
    【解决方案5】:

    纯属猜测,但它是否可以使用 HTML 5 规范中的 Server Side DOM 事件?

    【讨论】:

      【解决方案6】:

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

      WebSocket 和 Comet 是不同的。

      格兰维尔

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

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

          无论如何,Google 将 GWT 框架与 Google Closure 库的某些方面(实际上是开源并记录在案)一起使用,并且他们使用 goog.net.BrowserChannel 库,该库来自 cmets 也用于 gmail 中的聊天功能.

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

          【讨论】:

            【解决方案9】:

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

            【讨论】:

            • XMLHttpRequest 被发送一次,如果没有收到应答,连接被终止,即它。没有人会等待任何事情。这就是“彗星”技术所做的,非无休止的 GET 请求.. 在 wiki 上阅读此内容。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-05-26
            相关资源
            最近更新 更多