我想知道Gmail(或其他任何人)如何在Opera上彗星。
以下是我对实验的了解。
我试着看看它是如何在mibbit和etherpad中完成的,我发现它们都使用了长轮询。
恩惠
无论谁能告诉我一种比Opera事件流的“事件来源”更好的方法,或者gmail如何进行流式传输(或者长时间轮询,如果它能够这样做),那就是赏金。
答案 0 :(得分:9)
GMail使用BrowserChannel(Docs | Source),它包含在Google的Closure Library中。
- @fileoverview BrowserChannel类的定义。一个BrowserChannel
- 模拟HTTP上的双向套接字。它是
的基础- Gmail聊天与服务器的IM连接。
答案 1 :(得分:0)
我真的不知道答案是什么。但我知道Opera支持服务器事件:http://my.opera.com/WebApplications/blog/show.dml/438711。也许这是朝向anwser迈出的一步? 我也不确定,但我认为他们在Opera Unite中使用它。
答案 2 :(得分:0)
我认为相反的跨浏览器(包括Opera)方法可能是通过Adobe Flash应用程序传输数据。虽然它会引入对Flash插件的依赖,但并不是很受欢迎。
答案 3 :(得分:0)
我是一个与goog.netBrowserChannel兼容的progess C ++ HTTP服务器的作者。您可以在此处查找我在编写协议时编写的文档:
http://code.google.com/p/libevent-browserchannel-server/wiki/BrowserChannelProtocol
长话短说,BrowserChannel在IE上使用永久帧,在所有其他浏览器上使用XHR流。该协议分为几个阶段,第一阶段是网络测试:
1)测试网络以确保支持响应“流”(换句话说,不存在缓冲代理)
2)检查对各种网络前缀的访问(以确保网络管理员没有阻止访问聊天)
然后可以开始实际的数据传输。数据分为两个通道(前向和后向)。反向信道是一系列长期存在的(每个约4分钟)请求,用于服务器将内容“流”到客户端。为此,使用HTTP分块编码。客户端最好确保一个反向通道始终处于打开状态。服务器将大约每4分钟关闭一次,之后客户端将打开一个新的反向通道。前向信道用于将数据从客户端发送到服务器。必要时可以推送数据。