成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

如何設(shè)計一個簡單的聊天APP

1. 服務(wù)端設(shè)計思路 服務(wù)端主要實現(xiàn)以下功能: 處理客戶端登錄請求 處理客戶端設(shè)置請求(更改密碼、設(shè)置昵稱、設(shè)置留言等) 處理客戶端發(fā)送信息請求(文字、圖片、表情等) 處

1. 服務(wù)端設(shè)計思路

服務(wù)端主要實現(xiàn)以下功能:

  1. 處理客戶端登錄請求
  2. 處理客戶端設(shè)置請求(更改密碼、設(shè)置昵稱、設(shè)置留言等)
  3. 處理客戶端發(fā)送信息請求(文字、圖片、表情等)
  4. 處理客戶端發(fā)送文件請求(包括發(fā)送離線文件請求)
  5. 處理客戶端聊天記錄下載請求
  6. 處理客戶端查詢用戶列表、添加好友等請求

上述功能圍繞著網(wǎng)絡(luò)通信和數(shù)據(jù)庫維護展開。任務(wù)處理邏輯如下:

  • 使用Windows完成端口線程池技術(shù)實現(xiàn)網(wǎng)絡(luò)通信,可以使用現(xiàn)有的網(wǎng)絡(luò)庫。當新的請求報文到達時,實例化對應(yīng)的任務(wù)類,并投遞到一個任務(wù)隊列中。
  • 任務(wù)隊列使用信號量內(nèi)核對象來維護,當有新的任務(wù)時,從線程池中激活一個線程去執(zhí)行該任務(wù)。

具體業(yè)務(wù)邏輯細節(jié)如下:

  1. 當客戶端接入但超過n分鐘未登錄時,服務(wù)端會主動斷開該客戶端的連接,以節(jié)約資源。
  2. 客戶端登錄時,在數(shù)據(jù)庫中記錄該用戶的IP地址和端口號,并標記為已登錄狀態(tài)。已登錄的客戶端不允許重復(fù)登錄。當客戶端注銷、主動掛斷或被動掛斷等事件發(fā)生時,清除該用戶的登錄狀態(tài)。
  3. 客戶端發(fā)送消息傳送請求時,服務(wù)端先判斷目標用戶是否在線。如果在線,直接將消息轉(zhuǎn)發(fā)到目標用戶所在的客戶端IP/端口;否則,將消息存入數(shù)據(jù)庫,在目標用戶登錄時進行推送。
  4. 客戶端發(fā)送文件請求時,如果雙方均在線,則服務(wù)器協(xié)調(diào)雙方客戶端進行直連。如果直連成功,發(fā)送方直接向接收方發(fā)送文件,服務(wù)端不介入數(shù)據(jù)轉(zhuǎn)發(fā)。如果直連不成功或接收方不在線,服務(wù)器要求客戶端先發(fā)送文件驗證信息,以查詢將要發(fā)送的目標文件。如果服務(wù)端已經(jīng)存在相同的文件(文件名、大小和MD5校驗相同),則通知客戶端無需上傳,并在數(shù)據(jù)庫中對已存在的文件引用計數(shù)加1。如果服務(wù)端不存在該文件,則通知客戶端發(fā)送文件并進行接收。
  5. 當服務(wù)端收到客戶端下載聊天記錄請求時,從數(shù)據(jù)庫中查詢該用戶的聊天記錄,并分頁傳送給客戶端。

2. 客戶端設(shè)計思路

任何報文請求都遵循以下步驟:

  1. 發(fā)送請求報文
  2. 等待服務(wù)端處理結(jié)果
  3. 對結(jié)果進行處理
注意:本文章僅討論聊天APP的設(shè)計思路,具體實現(xiàn)可以在任意平臺上進行,如Windows、Linux、Android、iOS等。
標簽: