2011-11-22 31 views
5

我正在開發一個Web應用程序,它使用Comet Hidden iFrame技術將數據從服務器推送到移動瀏覽器。Android瀏覽器的替代服務器推/彗星實現而不發送4KB消息?

一切工作正常在移動Safari瀏覽器,但Android更痛苦。似乎需要從服務器發送4 KB消息才能將消息記入帳戶。這是每個消息不僅是第一個。

一些人試圖使用XMLHttpRequest的彗星流卻有着相同的4KB問題(http://code.google.com/p/android/issues/detail?id=13044)

有沒有人管理,以實現執行在Android瀏覽器上使用Comet技術而不需要將消息填充到4KB?

測試於Android 2.1,2.2

服務器發送的事件似乎甚至沒有版本支持Android 4.0的 http://caniuse.com/eventsource

同爲WebSocket的 http://caniuse.com/websockets

感謝

-seb

回答

2

不確定它是否符合要求es作爲您的直接問題的答案,但一般建議是使用未來防禦技術,回落到相當好的polyfill

對於您的特定問題,我相信WebSockets是最好的技術,與WebSocket服務器(node.js,Kaazing)結合使用,具有良好的後備選項。我對Kaazing更加熟悉:它在非WebSocket兼容的瀏覽器上提供與本機WebSocket性能幾乎相同的性能。 有關WebSocket仿真的更多信息,可能會發現this post useful on WebSocket emulation

+0

Websockets **不** **工作在大多數3G連接。請記住,當跳上行者。 –

+0

這就是爲什麼模擬如此重要... –

1

這個4KB緩衝區問題已經存在了很長時間,在桌面瀏覽器以及Android Internet.app(我不知道)上依然如此。

解決方案是發送一個4KB的塊與初始連接。這是HTTP StreamingHTTP Long-Polling更好的解決方案。通過流式傳輸,您可以在新數據可用時保持連接處於打開狀態,這與您關閉然後重新打開連接的長輪詢不同。這種技術意味着有一個最初不幸的4KB塊無用數據,但除此之外的所有數據都是實際數據(可用)。我花了幾個小時的時間搞亂了這個緩衝區大小,並且它在Web瀏覽器之間有時會不一致。

但是,有一些公司,例如Caplin Systems,在衆多金融機構使用的企業級應用程序中使用HTTP Streaming,所以有可能一直保持良好的工作狀態。

有沒有人設法在Android瀏覽器上實現Comet技術,而無需將消息填充到4KB?

這種情況發生的可能性很小。而WebSockets(正如@Peter Moskovits指出的那樣)是這種雙向通信(強調推動目前)將在未來跨瀏覽器實現的方式。對於Android來說,這意味着用戶還需要在他們的設備上安裝Flash以支持互聯網應用程序,以支持Flash後備技術,因爲目前Android本身不支持WebSocket,所以這將是必需的。

1

在Android上,以及瀏覽器和rgd。的WebSockets:

  • Firefox移動版已經支持(含最後RFC6455)

  • 內置瀏覽器對WS沒有任何的支持(最高和含安卓4.0)

  • Chrome行動(完整的RFC6455)..只適用於Android 4

+0

Websockets從Android 4.4開始 –

相關問題