2010-06-22 116 views
3

我有幾個有關Web Sockets的問題。網絡套接字問題

最新的Firefox 4.0 nightlies支持Web套接字。 Webkit(Chrome 4 + Safari 4/5)也是如此。根據微軟的說法,Internet Explorer 9在某些時候應該具有Web套接字功能(穩定版之前)。

不管怎樣,我的問題是:

  • 我建立一個JavaScript管理界面來管理網站。我應該使用Web套接字進行客戶機 - 服務器通信而不是XMLHttpRequest,如果我告訴過你我不是需要關心瀏覽器的兼容性嗎?

  • 與XMLHttpRequest的常見情況相比,Web套接字是否會導致更快的保存,刪除和更新調用?請求會更多即時

  • 我知道的HTML5的navigator.onlinewindow.addEventListener('offline', ...),但隨着網絡套接字(在連接丟失),我能夠更準確和快速地檢測連接的問題?我的意思是,當我關閉我的互聯網連接,或用我的防火牆阻止時,Firefox似乎仍然指出navigator.online真實。使用Web套接字,似乎與服務器的連接將立即丟失,因此,我可以更準確地檢測到連接問題?

  • 我可以支持Web套接字服務器端與 PHP,因此,該代碼是便攜與其他Web服務器(沒有無需安裝任何Apache模塊或做其他定製)。我想將軟件分發到幾個地方,而不必讓人們將各種模塊安裝到他們的HTTPD或其他地方。

我希望你能回答儘可能多的這些問題。我對答案很感興趣。

回答

5

我正在構建一個JavaScript管理界面來管理網站。如果我告訴你我不需要關心瀏覽器兼容性,我應該使用Web套接字進行客戶端 - 服務器通信而不是XMLHttpRequest嗎?

在我看來,你只是爲了它而使用WebSockets。使用WebSockets的主要原因是當你想要將數據從服務器推送到客戶端時。如果你的應用程序不需要這個,你可能不應該使用WebSockets。

與XMLHttpRequest的常見情況相比,Web套接字是否會導致更快的保存,刪除和更新調用?請求會更加及時嗎?

由於缺少標頭,您可能會在兩端(客戶端和服務器)節省一些時間。但收益可能相當小。

與Web套接字(在連接丟失時),我能夠更準確,更快地檢測到連接問題嗎?

是的,一個事件會在WebSocket關閉時立即觸發。替代方案將是長輪詢或定期XHR。或事件客戶端存儲。

我可以支持Web套接字服務器端採用純PHP,因此,該代碼是便攜與其他Web服務器

首先,我建議你通過閱讀this。 WebSocket在同步方式下效果不佳。以異步方式,PHP和apache不能很好地工作。雖然therearesomeimplementations,其中許多已過時。我個人會爲此使用其他語言,例如rubypython,javaserver-side javascript。只是因爲語言對異步模型有更好的支持,WebSocket實現更復雜。

WebSocket協議目前仍然是一個草案,它可以改變。就像它做a few weeks ago。所以你的代碼可能會崩潰。

我的建議是:不要僅僅爲了它而使用WebSockets。如果你有一個實時的事件驅動的應用程序,那麼它可能是正確的選擇。確保您瞭解什麼是WebSockets,以及它在服務器端的用途,以及事件驅動的應用程序。不要用它來製作任何東西,它太脆弱了。

+1

注意:現在有一個體面的WebSocket服務器用PHP編寫:http://socketo.me/ – igorw 2013-01-09 02:52:24