2009-05-03 53 views
7

是否有可能讓Web服務器在沒有Comet的情況下向Web瀏覽器發送消息?反向Ajax無彗星?

每一個主要的網絡公司如Facebook和谷歌使用彗星爲了這個目的,它只是似乎是一個醜陋的黑客等待消失,如果TCP連接被各大瀏覽器中啓用。

回答

5

是否有可能讓web服務器 發送消息到web瀏覽器 沒有彗星?

是的,它可能通過Silverlight,Flex,Flash和Java Applet。

每一個主要的網絡公司,如Facebook 和谷歌使用彗星爲了這個目的 ,它只是似乎是一個醜陋的黑客 等待消失,如果TCP連接 了重大 瀏覽器中啓用。

TCP連接a la HTML 5 Web Sockets不會解決問題。你看到很多人在他們的工作場所,大學或學校使用Google和Facebook,而防火牆通常會阻止非標準端口和非HTTP流量。因此,將消息發送到Web瀏覽器的解決方案必須通過HTTP工作,並且通常看起來像HTTP。這就是爲什麼谷歌和Facebook使用Comet並將繼續這樣做,否則他們將無法接觸到大部分用戶。事實上,一些防火牆和反向代理將關閉長時間運行的HTTP連接,因此Ajax輪詢連接通常用作後備。如果您正在查找能夠通過Reverse Ajax將消息發送到瀏覽器的服務器,我可以建議類似StreamHub Reverse Ajax的內容。

+1

請參閱:http://stackoverflow.com/questions/1227266/how-do-i-open-a-connection-back-to-the-server-using-flex – DLauer 2009-09-25 22:25:29

2

爲什麼你認爲Facebook和谷歌會怎麼做,如果有另一種方式?

嗯,好吧,還有其他的方法。您可以在頁面中嵌入Java小程序。如果Java小應用程序已簽名,並且用戶授予它許可權,則可以爲服務器打開長時間運行的連接以發送事件。但是,這會讓你感覺更脆弱,需要更多的用戶交互,啓動速度較慢,並且在比Comet更少的平臺上工作。

已經有一些關於將server-sent eventsweb sockets添加到HTML5的討論,但這是非常初步的,可能不會成爲標準。

2

爲「彗星」是什麼人工術語,它使用現有的HTTP協議來模擬數據推我擔心有什麼可以做。

唯一的解決方案將是一個當前協議的「增強」或一些廣泛使用的可能是基於插件的解決方案...您可以使用Java爲。但是這會增加其他問題,因爲基本上你需要在該瀏覽器上有傳入連接。

2

彗星可以實現爲只是一個長輪詢Ajax調用,所以它會是一個語義學問題。 Here, for example, is a jquery plugin它使用Bayeux協議在jQuery的ajax調用上實現Comet。