Java+Netty、Vue+Element-UI實現的即時通訊應用 leo-im

以前工做接觸了幾個開源的IM產品,再加上曾經用Netty實現過幾個服務,因而就有了用Netty實現一個IM的想法,因而用業餘時間寫了一個IM,和喜歡Netty的程序員們分享。前端

leo-im

考慮到方便擴展,在服務端採用了Http+Socket結合的設計,客戶端全部的請求都基於Http,如發送消息、修改我的信息等,全部的消息推送採用Socket方式即時推送到客戶端,這樣的設計能夠在併發訪問量大的狀況下,將Http服務與Socket服務分開部署,減少各自的訪問壓力。git

Http服務也基於Netty實現,在Netty之上作了擴展,參考Spring MVC註解實現了netty-rest-server(netty-rest-server),使用該框架,可實現註解注入REST controller,實現統一異常處理控制器和攔截器(如跨域攔截器、身份驗證攔截器等)。程序員

Http服務和Scoket服務之間的解耦和通信可以使用Java內置的隊列或Redis發佈/訂閱實現,消息處理器接收到任務後,會將該任務交由線程池處理,處理後經過GroupChannel發送廣播或發給指定的Channel。github

前端基於Vue+Element-UI開發,建議使用Chrome瀏覽器體驗。web

在線體驗跨域

測試用戶:test一、test二、test3,口令均爲:123456瀏覽器

源碼地址併發

相關文章
相關標籤/搜索