1. 程式人生 > >第4章_Java仿微信全棧高效能後臺+移動客戶端

第4章_Java仿微信全棧高效能後臺+移動客戶端

基於web端使用netty和websocket來做一個簡單的聊天的小練習。實時通訊有三種方式:Ajax輪詢、Long pull、websocket,現在很多的業務場景,比方說聊天室、或者手機端online的一些線上的聯機的小遊戲,其實它們都會需要去做到實時通訊。如何做到實時的雙向通訊呢?Ajax輪詢和Long pull,我們來說一下。迄今為止有些小專案還是這樣做的。Ajax輪詢的原理非常簡單,它是通過js使用Ajax的方式非同步地讓瀏覽器每隔一段時間,比如說十秒,或者半分鐘傳送一次請求到後端,去詢問伺服器有沒有一些相關的新的訊息或者新的狀態的更新。如果有,把這些資料拿出來拿到前端再進行一個相應的渲染,但是這種方式它是一種死迴圈,會一直地不停地迴圈地去獲得後端資料。同時,我們使用的是Ajax,瀏覽器不需要去一直重新整理。在一些後臺管理系統的首頁,我們有一些相應的控制面板,控制面板裡面有一些業務流程或者一些資料狀態的更新,我們往往會通過這種Ajax輪詢去做。

Long pull的原理跟Ajax輪詢其實是類似的,差不多的。它也是採用的一種迴圈的方式,只不過它請求的方式不太好,它是一種阻塞的模型,當客戶端發起請求之後,如何服務端沒有響應,那麼它就一直不會響應,它會一直卡住。