文章詳情頁
java - IM即時通信服務器原理
瀏覽:168日期:2024-01-29 14:39:35
問題描述
點對點 的 可以直接使用socket進行通信
但是一般的工程實現 都需要服務器進行轉發
那么我想請問 服務器管理那么多連接
它是如何做到 可以將消息發送給想發送的人的
除了openfire還有什么 開源實現
問題解答
回答1:node.js + socket.io websocket
之前做的是用node.js + socket.io 把連接的信息放到一個json中. 用 key來標識 是哪個用戶的. 然后發送的 消息 里會持有 這個key 服務端再通過 key 轉發給 對應 的客戶端.只知道 web這些 其它 的不是很清楚
回答2:就拿簡單的QQ比較,QQ用戶啟動客戶端登陸以后,實際就是用戶告知服務端我已經上線,那么這時候客戶端就處理服務器的監聽狀態,所謂一對一發消息,就是用戶A發個消息出去,然后消息內容里面肯定包含了,內容、接收者B,服務器監聽到這個消息,然后根據接收者B獲取clientSocket-B將A的消息轉發給B,大致如此
標簽:
java
上一條:java - mybatis的注解sql怎么設置返回類型和查詢參數,比如我要返回一個封裝好的類里面有map屬性的下一條:java - log4j2 在servlet3.1下報錯NoClassDefFoundError
相關文章:
1. html5 - 前端面試碰到了一個緩存數據的問題,來論壇上請教一下2. 運行python程序時出現“應用程序發生異常”的內存錯誤?3. java - butterknife怎么綁定多個view4. macos - 無法source activate python275. java - 同步/異步與阻塞/非阻塞之間的差異具體是什么?6. css3 讓圖片變成灰色(filter),但針對IE11瀏覽器無效7. android - Genymotion 模擬器可以做屏幕適配檢測嗎?8. html - vue里面:src在IE(9-11)下不顯示圖片9. javascript - 打算寫一個c++的node圖像處理模塊,有沒有推薦的c++圖片處理庫?10. html5 - 在HBuilder中打包Android的apk包出錯,不知道是什么原因。
排行榜

網公網安備