2014-03-27 77 views
3

我有一個web應用程序,其中永久連接從服務器到它的客戶端(瀏覽器)是需要的爲了實時(近)推送新聞/更新到客戶端。這不會是如此棘手,如果通過網站的一些元素的導航不會導致整個頁面refreshs即使頁面刷新後,Websocket連接如何保持持久性?

輪詢(標準方式或長輪詢)新聞服務器是不是一種選擇,因爲它會導致不必要的經常調用的請求(因爲沒有消息可用)。此外,消息可能隨機上漲。因此,使用輪詢策略,服務器將關閉... 對於websocket(雙向通信通道),客戶端和服務器必須接受升級到websocket。 討論了類似的問題here,但沒有找到令人滿意的解決方案。

數據可以通過將其存儲在cookie或其他方式生存刷新整個頁面:

  • 餅乾
  • window.name(www.thomasfrank.se/sessionvars.html)
  • localStorage的:專賣店數據沒有到期日期。瀏覽器關閉時,數據不會被刪除 。示例:Perseverance(github.com/viseztrance/perseverance)
  • PersistJS:跨瀏覽器客戶端持久存儲沒有cookie存儲 Javascript對象是通過序列化/反序列化對象完成的。

是否有類似於運行像websockets對象的東西?

一些可能性我認爲,主要有:

  • 老式風格的「解決方案」將是把整個Web應用程序中的iFrame並添加(幀)到最外面的窗口中的連接。這不是一種選擇,因爲它會導致很多不同的其他問題。
  • 的自HTML5 Share Web Workers退出,但因爲有限的瀏覽器支持這個,也不能使用。

所以我的問題是:有沒有可能/破解如何保持我的websocket連接打開,如果頁面刷新?這樣我就不必重新初始化到服務器的連接了?

回答

0

答案很簡單 - 最好的解決辦法是改變你的服務器的一部分,所以它可以處理連接丟失和恢復(並使用cookies來保存「會話ID」或別的東西)。

因爲我看不到任何要求的字面實現這一目標。甚至更多 - 你可以鬆不referesh但由於連接問題,因爲連接(但你可以找出哪些人發生過)

相關問題