首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Socket 局域網實時通信架構:服務端維護客戶端列表與心跳機制

     編輯:程式設計綜合問答

場景需求

多台客戶端連接中心服務器,服務器需實時向所有在線客戶端廣播當前在線列表。

關鍵設計

  1. 服務端維護連接映射:使用 ConcurrentHashMap 存儲 clientId -> Channel,支持高併發增刪查。
  2. 心跳檢測:客戶端定期(如每 30 秒)發送心跳包;服務端記錄最後收到時間,超過閾值(如 90 秒)判定離線並移除。
  3. 廣播機制:列表變更時,序列化在線 ID 列表(JSON/Protobuf),遍歷映射逐個發送;或使用 Netty 的 ChannelGroup 一鍵廣播。
  4. 斷線重連:客戶端實現指數退避重連邏輯,重連後重新註冊 ID。

技術選型建議

  • Java 原生 NIO (Selector) 學習成本高,生產環境推薦 Netty 簡化開發。
  • 輕量級項目可考慮 WebSocket(Spring WebSocket / Socket.IO)利用 HTTP 基礎設施穿透防火牆。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved