java - 即時通信系統(tǒng)和push推送系統(tǒng)都是怎么實現(xiàn)的啊?
問題描述
一條消息 如何通過服務器中轉(zhuǎn)達到 指定的另一端的
方便的話 貼一段典型的代碼
另外session存儲的時候 都存儲什么信息啊
問題解答
回答1:我的理解:客戶端每間隔一段時間(比如一秒)向服務器進行一次請求(發(fā)送request)。如果服務端存在消息則在響應(response)中標記信息,通知客戶端服務器端存在新消息。客戶端向服務端發(fā)送請求拉去消息,服務端響應。
request:有新消息嗎?收到請回答。response:沒有。request:有新消息嗎?收到請回答。response:沒有。request:有新消息嗎?收到請回答。response:有,消息id是123456。request:請發(fā)送消息id是123456的消息內(nèi)容。response:消息id:123456,消息正文:驚!這個女人竟然在13億人面前做這種事……。
回答2:消息傳達是通過客戶端刷新向服務端獲得消息的而不是服務端直接向客戶端發(fā)送
以前確實有一些是直接在本地開端口由服務器直接請求客戶端的,但現(xiàn)在用于消息推送已經(jīng)不多見了(通常用于局域網(wǎng)內(nèi)傳輸文件或信息)
session存儲在服務器,本地通過 Cookies 存儲 SESSION 的 name 和 id,服務器通過這兩個而獲取服務器端存儲的內(nèi)容
回答3:目前常見的是兩種方案。1、客戶端主動輪詢(也就是每隔N時間向服務端詢問有沒有消息。2、服務端主動推送。后端服務之間用socket,與前端通訊的話可以用websocket。
回答4:http2.0 可以很好的處理,可以嘗試一下啊~
回答5:都說是即時性的了,肯定要建立長連接這種了。比如socket。
回答6:如果只是屬于產(chǎn)品的眾多功能之一,即時通信推薦題主對接IM,既可以節(jié)約一大筆開發(fā)支出,現(xiàn)有的IM提供商附帶的功能又比較全面,比自己開發(fā)要劃算的多,題主可以看一下環(huán)信 http://www.easemob.com/
相關(guān)文章:
1. javascript - js 有什么優(yōu)雅的辦法實現(xiàn)在同時打開的兩個標簽頁間相互通信?2. html5和Flash對抗是什么情況?3. javascript - angular和jquery都用到了$符號,一起用會不會沖突?4. java - 新手做一個安卓視頻播放器,想實現(xiàn)一個進度條,按鈕那種在視頻下方懸浮的功能,不知道思路!5. css3 - Typecho 后臺部分表單按鈕在 Chrome 下出現(xiàn)靈異動畫問題,求解決6. java - android代碼重構(gòu):如何把app設(shè)置里的頭像UI做成通用的?7. javascript - 怎樣限制同一個瀏覽器不能登錄兩個賬號8. 想找個php大神仿個網(wǎng)站。9. javascript - 一個抽獎的效果(如圖)?10. javascript - jquery怎么給select option一個點擊時觸發(fā)的事件,如圖 如果選擇自定義觸發(fā)一個時間?
