本文出現(xiàn)在第三方產(chǎn)品評論部分中。在這一部分的文章只提供給會(huì)員,不允許工具供應(yīng)商用來以任何方式和形式來促銷或宣傳產(chǎn)品。請會(huì)員報(bào)告任何垃圾信息或廣告。
Web項(xiàng)目常常需要將數(shù)據(jù)盡可能快地推送給客戶,必要時(shí)無需等待客戶端請求。對于與用戶之間進(jìn)行實(shí)時(shí)通信的網(wǎng)站,例如在線交流或文檔協(xié)作工具,或者在長期運(yùn)行的計(jì)算/執(zhí)行任務(wù)的服務(wù)器上更新系統(tǒng)狀態(tài),等等這些時(shí)候,采用雙向溝通機(jī)制是理想的。
以前,這類問題一般使用下面的解決方案:
使用 Flash 中的 Socket 連接(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html)
Ajax 長輪詢(https://gist.github.com/jasdeepkhalsa/4353139)
服務(wù)器發(fā)送事件... (http://en.wikipedia.org/wiki/Server-sent_events)
...或者就用 IE 中經(jīng)典的 Frame 技術(shù)(http://cometdaily.com/2007/11/05/the-forever-frame-technique/)
但現(xiàn)在我們有了更好的選擇:WebSocket。它的標(biāo)準(zhǔn)在2011年發(fā)布,在現(xiàn)代瀏覽器上已實(shí)施了一段時(shí)間。它更好的原因是使用更安全和更成熟的協(xié)議,帶來了改進(jìn)和升級。
略注:
這份比較是幾個(gè)月前做的,可能不夠及時(shí),但如果有人要找好的WebSocket庫,我認(rèn)為這對他仍然是有用的。
本比較只針對以 NuGet 包形式發(fā)布的庫, SuperWebSocket 雖然使用 NuGet 的 repository,但需要從網(wǎng)頁中下載。
也許等我抽出空來,我會(huì)使用新的庫或已測試的庫的新版本進(jìn)行比較然后更新這篇文章。
https://github.com/statianzo/Fleck
我發(fā)現(xiàn)這個(gè)庫真的是簡單易用,對于庫、文檔、例子等都是,只要添加庫,復(fù)制幾行例子里的代碼,然后運(yùn)行——就這么簡單。
但是簡單是有代價(jià)的:其功能并不強(qiáng)大,且可配置的地方太少。