文章詳情頁
java - IM即時通信服務器原理
瀏覽:117日期:2024-01-29 14:39:35
問題描述
點對點 的 可以直接使用socket進行通信
但是一般的工程實現(xiàn) 都需要服務器進行轉(zhuǎn)發(fā)
那么我想請問 服務器管理那么多連接
它是如何做到 可以將消息發(fā)送給想發(fā)送的人的
除了openfire還有什么 開源實現(xiàn)
問題解答
回答1:node.js + socket.io websocket
之前做的是用node.js + socket.io 把連接的信息放到一個json中. 用 key來標識 是哪個用戶的. 然后發(fā)送的 消息 里會持有 這個key 服務端再通過 key 轉(zhuǎn)發(fā)給 對應 的客戶端.只知道 web這些 其它 的不是很清楚
回答2:就拿簡單的QQ比較,QQ用戶啟動客戶端登陸以后,實際就是用戶告知服務端我已經(jīng)上線,那么這時候客戶端就處理服務器的監(jiān)聽狀態(tài),所謂一對一發(fā)消息,就是用戶A發(fā)個消息出去,然后消息內(nèi)容里面肯定包含了,內(nèi)容、接收者B,服務器監(jiān)聽到這個消息,然后根據(jù)接收者B獲取clientSocket-B將A的消息轉(zhuǎn)發(fā)給B,大致如此
標簽:
java
上一條:java - mybatis的注解sql怎么設(shè)置返回類型和查詢參數(shù),比如我要返回一個封裝好的類里面有map屬性的下一條:java - log4j2 在servlet3.1下報錯NoClassDefFoundError
相關(guān)文章:
1. java - 根據(jù)月份查詢多個表里的內(nèi)容怎么實現(xiàn)好?2. css3 - 沒明白盒子的height隨width的變化這段css是怎樣實現(xiàn)的?3. javascript - 在 model里定義的 引用表模型時,model為undefined。4. android - 課程表點擊后浮動后邊透明可以左右滑動的界面是什么?5. javascript - 一個關(guān)于客戶端和前端通信的疑惑?6. mysql表中索引重復的問題?7. css3 - 這個右下角折角用css怎么畫出來?8. javascript - webpack熱加載配置不生效9. mysql - eclispe無法打開數(shù)據(jù)庫連接10. windows2003下的apache響應時間特別長?
排行榜

熱門標簽