我想知道Gmail(或任何其他人)如何在Opera上实现彗星。Gmail如何在Opera上做彗星?
这是我迄今从我的实验中知道的。
- 它不使用在Opera 10.51中损坏的event-source标签。
- 它不使用显示旋转跳动和忙碌鼠标光标的iframe。
- 当readyState = 3时,它不会在xmlhttprequest上使用responseText,这已知会在Opera上损坏。
我试着看它是如何在mibbit和etherpad中完成的,我发现它们都使用长轮询。
赏金
赏金去谁可以告诉我的方法不是“事件源”为歌剧Comet流,或如何Gmail也流(或者,如果长轮询它确实是)更好。
即http://closure-library.googlecode.com/svn/docs/closure_goog_net_browserchannel.js.html 觉得你实际上是在寻找什么在这里: http://closure-library.googlecode.com/svn /docs/closure_goog_net_channelrequest.js.source.html 搜索pollResponse_和getNextChunk_ :) – hallvors 2010-04-19 13:40:58
你能成为一个更具体一点?我觉得我已经给予了足够的慷慨奖励,而不仅仅是一个巨型抽象图书馆的链接。 – Unknown 2010-04-19 22:26:51
嗯,我觉得这应该留给杰森,因为他给了Closure原始指针,我只是深入一点。看看这个源代码,它似乎使用了一个异步的XMLHttpRequest,确实有一个超时负责轮询responseText并处理传入的数据。当chunked数据进入时,Opera并没有触发几个readystatechange事件(我认为Firefox主要是因为一个令人意外的事故 - 目前没有标准或文档要求这种实现,据我所知)。所以不要期待多个readystatechange事件使用超时。 – hallvors 2010-04-20 13:56:18