light-push輕量級推送服務和實時在線監(jiān)控平臺
概述
輕量級推送服務和實時在線監(jiān)控平臺,基于node的socket.io,支持web、android、ios客戶端,支持移動端離線推送,可大規(guī)模集群部署
前言
隨著互聯(lián)網網速的不斷提升,實時消息的應用場景越來越多。我在參與公司多個產品的研發(fā)中,不止一次的遇到需要集成聊天功能的需求。既然是聊天就必須把消息盡快送達目標用戶,做的多了就有了一套自己的經驗和想法,然后借著閑暇時間一點點的就寫出了這個項目。這個項目靈感來源于實際開發(fā)工作,同時又把它應用到自己開發(fā)工作中。希望它能幫到你,也希望你能給我更多的反饋和改進意見,讓它幫到更多的人。
功能特性
業(yè)務系統(tǒng)通過
restful接口方式調用推送服務客戶端通過
socket.io協(xié)議和推送服務器建立連接通過命名空間對客戶端進行安全隔離和管理,不同客戶端之間不能相互收發(fā)消息,如果業(yè)務系統(tǒng)是saas模式,命名空間相當于公司或組織的概念
使用負載均衡器來負責每一個客戶端的接入工作,每一個客戶端隨機分配給一個后端服務,保證后端服務負載更佳平均(需要安裝nginx)
單個客戶端和后端服務建立強關聯(lián),會話信息不丟失,可實現(xiàn)多機多進程部署
使用
redis保存相關數(shù)據,后端服務的整體響應速度更快可實現(xiàn)單個用戶多端連接,滿足聊天系統(tǒng)多端登陸需求
通過界面或者接口來監(jiān)控和統(tǒng)計客戶端在線信息
通過界面模擬客戶端上線/下線
通過界面模擬推送功能
模擬網絡異常下的推送,方便客戶端編寫數(shù)據同步功能
通過界面或者接口統(tǒng)計消息到達率(需要客戶端ack確認回執(zhí))
可查詢歷史消息,可統(tǒng)計每天的推送總量,以及當前小時/當前分鐘的推送總量
當客戶端未收到推送消息時,如果客戶端為
ios平臺則用apns做離線推送,如果是android會保存該消息直到客戶端上線監(jiān)聽每一個客戶端接入事件并可回掉業(yè)務系統(tǒng)由業(yè)務系統(tǒng)決定客戶端是否有權接入
監(jiān)聽每一個用戶的離線事件并可會掉業(yè)務系統(tǒng)
客戶端房間變動事件可選擇行的廣播推送到對應的房間中
客戶端可主動推送消息,滿足聊天系統(tǒng)中正在輸入中的功能需求
可為每一個客戶端保存一些特殊數(shù)據,比如最后一次的接入信息,操作系統(tǒng)信息等等,同時提供一鍵清除僵尸客戶端功能(一定時間未接入過服務器)
后端服務本身支持cors跨域訪問
采用消息隊列方式推送離線消息
服務運行時的各個參數(shù)可自行配置,比如消息默認失效時間,房間名最大長度等等
快速體驗
docker run -id -p 443:443 --name push-demo liuss/push:需要將/mnt/data/start.sh version改成對應的版本號訪問管理頁面:
https://127.0.0.1登錄名 demo 密碼 123456 勾選管理員選項
