我想创建一个像这样的应用程序:
最有效的创建这种实时应用程序的方法是什么?
Flash?长轮询?HTTP流?还是其他方法?
谢谢;)
目前,长轮询可能是最好的解决方案。许多大型网站都使用了长轮询实现,包括Facebook、Google和eBay。并非所有人都在浏览器中安装或启用了Flash。未来,Web Sockets也许能够更轻松地为我们完成这项工作。
更新:截至本文撰写时,WebSocket API已在最新的WebKit(Chrome/Safari)和Firefox 4 beta中实现。Opera也有一个公共快照版本可供下载,其中包含了该API的实现。这意味着API测试已经广泛可用。有关更多信息,请参见此答案。
我认为长轮询不是实现Comet最有效的方式。无论如何,它在收到响应后会发送新的HTTP请求。这比HTTP流式传输需要更多的额外HTTP请求。
但是,长轮询可能比HTTP流式传输更可靠且更易于实现。根据Google Code中的文章,如果中间的HTTP代理缓冲内容,则HTTP流式传输可能无法正常工作。
有趣的是,Gmail并没有使用长轮询。通过Http sniffer的帮助,可以清楚地看到它使用HTTP流式传输来实现Comet。