首页 文章

Gmail如何在Opera上彗星?

提问于
浏览
10

我想知道Gmail(或其他任何人)如何在Opera上彗星 .

以下是我对实验的了解 .

  • 它不使用Opera 10.51中断的event-source标记 .

  • 它不使用iframe来显示旋转的颤动和繁忙的鼠标光标 .

  • 当readyState = 3时,它在xmlhttprequest上不使用responseText,这已知在Opera上被破坏 .

我试着看看它是如何在mibbit和etherpad中完成的,我发现它们都使用了长轮询 .

Bounty

赏金归于谁能告诉我一种方法比Opera彗星流的“事件源”更好,或者gmail如何进行流式传输(或者如果它那么长时间轮询) .

4 回答

  • 0

    GMail使用BrowserChannel(Docs | Source),它包含在Google的Closure Library中 .

    @fileoverview BrowserChannel类的定义 . BrowserChannel模拟HTTP上的双向套接字 . 它是与服务器的Gmail聊天IM连接的基础 .

  • 0

    我真的不知道答案是什么 . 但我知道Opera支持服务器事件:http://my.opera.com/WebApplications/blog/show.dml/438711 . 也许它's a step towards the anwser? I'我也不确定,但我认为他们在Opera Unite中使用它 .

  • 0

    我认为相反的跨浏览器(包括Opera)方法可能是通过Adobe Flash应用程序传输数据 . 虽然它会引入对Flash插件的依赖,并且因此而不是很受欢迎 .

  • 9

    我是一个与goog.netBrowserChannel兼容的progess C HTTP服务器的作者 . 您可以在此处查找我在编写协议时编写的文档:

    http://code.google.com/p/libevent-browserchannel-server/wiki/BrowserChannelProtocol

    简而言之,BrowserChannel在IE上使用永久帧,在所有其他浏览器上使用XHR流 . 该协议分为几个阶段,第一阶段是网络测试:

    1)测试网络以确保支持响应"streaming"(换句话说,不存在缓冲代理)
    2)检查对各种网络前缀的访问(以确保网络管理员没有阻止访问聊天)

    然后可以开始实际的数据传输 . 数据分为两个通道(前向和后向) . 反向通道是一系列长期存在的(每个约4分钟)请求,用于服务器将内容“流”到客户端 . 为此,使用HTTP分块编码 . 客户端最好确保一个反向通道始终处于打开状态 . 服务器将大约每4分钟关闭一次,之后客户端将打开一个新的反向通道 . 前向信道用于将数据从客户端发送到服务器 . 必要时完成数据推送 .

相关问题