client:喧喧客戶端xxd:GO 聊天服務(wù)器xxb:后臺然之服務(wù)器
常見的請求對象格式
{ userID, // 用戶id,xxd → xxb 非登錄時必須 module, // 模塊名稱,必須 method, // 方法名稱,必須 test, // 可選參數(shù),bool,默認(rèn)為false。 params, // 參數(shù)對象,可選 data // 請求數(shù)據(jù),可選,與params配合使用,通常data傳輸是對象 }
常見的響應(yīng)數(shù)據(jù)格式
{ module, // 模塊名稱,必須 method, // 方法名稱,必須 users[], // 該數(shù)據(jù)響應(yīng)給哪些用戶,users為空表示所有在線用戶 params, // 參數(shù)對象,可選 result:, // 響應(yīng)狀態(tài),可為"success"(成功), "fail"(失敗), "denied"(拒絕,需要登錄), message:,// 消息,可選,當(dāng)result不為success時,使用此字段來解釋原因 data // 數(shù)據(jù) }
xxd啟動時會向xxb發(fā)送一條請求,xxb收到請求將所有用戶狀態(tài)重置為offline。
請求
{ module: "chat", method: "serverStart" }
響應(yīng)
HTTP Status Code
登錄
請求
{ module: "chat", method: "login", params: [ serverName,// 多然之時客戶端登錄的服務(wù)器名稱 account, // 用戶名 password, // 加密后的密碼 status // 登錄后設(shè)置的狀態(tài),包括online,away,busy ] }
xxd服務(wù)器根據(jù)module、method和serverName把請求發(fā)送給指定的xxb
響應(yīng)
{ module: "chat", method: "login", result, users[], data: { // 當(dāng)前登錄的用戶數(shù)據(jù) id, // ID account, // 用戶名 realname,// 真實(shí)姓名 avatar, // 頭像URL role, // 角色 dept, // 部門ID status, // 當(dāng)前狀態(tài) admin, // 是否超級管理員,super 超級管理員 | no 普通用戶 gender, // 性別,u 未知 | f 女 | m 男 email, // 郵箱 mobile, // 手機(jī) site, // 網(wǎng)站 phone, // 電話 ranzhiUrl// 當(dāng)前用戶所在的然之站點(diǎn)地址(可選,1.3新增) } }
登錄成功以后xxd主動從xxb服務(wù)器獲取用戶列表、用戶所參與的會話信息和用戶的離線消息發(fā)送給當(dāng)前客戶端。最后把xxb服務(wù)器響應(yīng)給xxd服務(wù)器的登錄信息去掉users字段后,發(fā)送給此會話包含的所有在線用戶。
登出
請求
{ userID, //登出用戶的id號 module: "chat", method: "logout", }
xxd把client發(fā)送的數(shù)據(jù)轉(zhuǎn)發(fā)給xxb。
響應(yīng)
{ module: "chat", method: "logout", result, users[], data: { // 當(dāng)前登錄的用戶數(shù)據(jù) id, // ID account, // 用戶名 realname,// 真實(shí)姓名 avatar, // 頭像URL role, // 角色 dept, // 部門ID status, // 當(dāng)前狀態(tài) admin, // 是否超級管理員,super 超級管理員 | no 普通用戶 gender, // 性別,u 未知 | f 女 | m 男 email, // 郵箱 mobile, // 手機(jī) site, // 網(wǎng)站 phone // 電話 } }
把xxb服務(wù)器響應(yīng)給xxd服務(wù)器的登出信息去掉users字段后,發(fā)送給此會話包含的所有在線用戶。
當(dāng)同一用戶重復(fù)登錄時,系統(tǒng)會向前一個登錄的用戶推送一條特殊的消息,客戶端接收到該消息后應(yīng)該將用戶登出,并關(guān)閉相關(guān)的網(wǎng)絡(luò)連接。該消息不需要響應(yīng)或返回結(jié)果。
{ module: "chat", method: "kickoff", message: "This account logined in another place." }
請求
{ userID, //用戶的id號 module: "chat", method: "userGetlist", params: [ idList, // 要獲取的用戶信息id編號數(shù)組,可選,如果留空則獲取所有用戶(1.3新增) ] }
xxd把client發(fā)送的數(shù)據(jù)轉(zhuǎn)發(fā)給xxb。
響應(yīng)
{ module: "chat", method: "userGetlist", result, users[], data: [ // 所有用戶狀態(tài)數(shù)組 { // 其中一個用戶數(shù)據(jù) id, // ID account, // 用戶名 realname, // 真實(shí)姓名 avatar, // 頭像URL role, // 角色 dept, // 部門ID status, // 當(dāng)前狀態(tài) admin, // 是否超級管理員,super 超級管理員 | no 普通用戶 gender, // 性別,u 未知 | f 女 | m 男 email, // 郵箱 mobile, // 手機(jī) site, // 網(wǎng)站 phone // 電話 }, // 更多用戶數(shù)據(jù)... ], roles: { "dev": "開發(fā)者", "productManager": "產(chǎn)品經(jīng)理" // 更多角色表數(shù)據(jù),格式為鍵名為角色代號,鍵值為角色顯示名稱 }, depts: [ {id: 2343, name: "研發(fā)部", parent: 0}, {id: 2344, name: "項(xiàng)目部", parent: 2343}, // 更多部門表數(shù)據(jù),每個對象表示一個部門信息,parent 為上級部門id,如果沒有上級部門parent值為0 ] }
把xxb服務(wù)器響應(yīng)給xxd服務(wù)器的信息去掉users字段后,發(fā)送給此會話包含的所有在線用戶。
請求
{ userID, module: "chat", method: "getList", }
xxd把client發(fā)送的數(shù)據(jù)轉(zhuǎn)發(fā)給xxb。
響應(yīng)
{ module: "chat", method: "getList", result, users[], data: [ // 所有會話信息數(shù)組 { // 其中一個會話信息 id, // 會話在服務(wù)器數(shù)據(jù)保存的id gid, // 會話的全局id, name, // 會話的名稱 type, // 會話的類型 admins, // 會話允許發(fā)言的用戶列表 subject, // 主題會話的關(guān)聯(lián)主題ID public, // 是否公共會話 createdBy, // 創(chuàng)建者用戶名 createdDate, // 創(chuàng)建時間 editedBy, // 編輯者用戶名 editedDate, // 編輯時間 lastActiveTime, // 會話最后一次發(fā)送消息的時間 star, // 當(dāng)前登錄用戶是否收藏此會話 hide, // 當(dāng)前登錄用戶是否隱藏此會話 members: [ // 當(dāng)前會話中包含的所有用戶信息,只需要包含id即可 { id, //用戶id }, // 更多用戶... ], }, // 更多會話數(shù)據(jù)... ] }
把xxb服務(wù)器響應(yīng)給xxd服務(wù)器的信息去掉users字段后,發(fā)送給此會話包含的所有在線用戶。
請求
{ userID, module: "chat", method: "getOfflineMessages", }
響應(yīng)
{ module: "chat", method: "message", result, users[], data: // 一個包含一條或多條離線消息的數(shù)組 [ { // 其中一條離線消息 id, // 消息在服務(wù)器保存的id gid, // 此消息的gid cgid, // 此消息關(guān)聯(lián)的會話的gid user, // 消息發(fā)送的用戶名 date, // 消息發(fā)送的時間 type, // 消息的類型 contentType, // 消息內(nèi)容的類型 content, // 消息內(nèi)容 }, // 更多離線消息 ] }
把xxb服務(wù)器響應(yīng)給xxd服務(wù)器的信息去掉users字段后,發(fā)送給當(dāng)前登錄用戶。
請求
{ userID, module: "chat", method: "userChange", params: [ // 更改后的用戶 user: // 一個用戶對象 { id, // ID account, // 用戶名 realname, // 真實(shí)姓名 avatar, // 頭像URL role, // 角色 dept, // 部門ID status, // 要設(shè)置的新狀態(tài),包括online, away, busy admin, // 是否超級管理員,super 超級管理員 | no 普通用戶 gender, // 性別,u 未知 | f 女 | m 男 email, // 郵箱 mobile, // 手機(jī) site, // 網(wǎng)站 phone // 電話 } ] }
xxd把client發(fā)送的數(shù)據(jù)轉(zhuǎn)發(fā)給xxb。
響應(yīng)
{ module: "chat", method: "userChange", result, users[], data: { //當(dāng)前登錄用戶數(shù)據(jù) id, // ID account, // 用戶名 realname, // 真實(shí)姓名 avatar, // 頭像URL role, // 角色 dept, // 部門ID status, // 狀態(tài) admin, // 是否超級管理員,super 超級管理員 | no 普通用戶 gender, // 性別,u 未知 | f 女 | m 男 email, // 郵箱 mobile, // 手機(jī) site, // 網(wǎng)站 phone // 電話 } }
把xxb服務(wù)器響應(yīng)給xxd服務(wù)器的信息去掉users字段后,發(fā)送給此會話包含的所有在線用戶。
請求
{ userID, module: "chat", method: "create", params: [ gid, // 會話的全局id, name, // 會話的名稱 type, // 會話的類型 members: [{id}, {id}...] // 會話的成員列表 subject, //可選,主題會話的關(guān)聯(lián)主題ID,默認(rèn)為0 pulic //可選,是否公共會話,默認(rèn)為false ] }
xxd把client發(fā)送的數(shù)據(jù)轉(zhuǎn)發(fā)給xxb。
響應(yīng)
服務(wù)器在創(chuàng)建會話時應(yīng)該先檢查gid是否已經(jīng)存在,如果存在則直接為當(dāng)前登錄用戶返回已存在的會話信息。
{ module: "chat", method: "create", result, users[], data: { // 新創(chuàng)建的會話完整信息 id, // 會話在服務(wù)器數(shù)據(jù)保存的id gid, // 會話的全局id, name, // 會話的名稱 type, // 會話的類型 admins, // 會話允許發(fā)言的用戶列表 subject, // 主題會話的關(guān)聯(lián)主題ID public, // 是否公共會話 createdBy, // 創(chuàng)建者用戶名 createdDate, // 創(chuàng)建時間 editedBy, // 編輯者用戶名 editedDate, // 編輯時間 lastActiveTime, // 會話最后一次發(fā)送消息的時間 members: [{id}, {id}...] // 會話的成員列表 } }
把xxb服務(wù)器響應(yīng)給xxd服務(wù)器的信息去掉users字段后,發(fā)送給此會話包含的所有在線用戶。
用戶可以加入類型為group并且公共的會話;用戶可以退出類型為group的會話。
請求
{ userID, module: "chat", method: "joinchat", params: [ gid, // 要加入或退出的會話id join // 可選, true加入會話, false退出會話, 默認(rèn)為true ] }
xxd把client發(fā)送的數(shù)據(jù)轉(zhuǎn)發(fā)給xxb。
響應(yīng)
{ module: "chat", method: "joinchat", result, users[], data: { // 會話的完整信息 id, // 會話在服務(wù)器數(shù)據(jù)保存的id gid, // 會話的全局id, name, // 會話的名稱 type, // 會話的類型 admins, // 會話允許發(fā)言的用戶列表 subject, // 主題會話的關(guān)聯(lián)主題ID public, // 是否公共會話 createdBy, // 創(chuàng)建者用戶名 createdDate, // 創(chuàng)建時間 editedBy, // 編輯者用戶名 editedDate, // 編輯時間 lastActiveTime, // 會話最后一次發(fā)送消息的時間 members: [{id}, {id}...] // 會話的成員列表 } }
把xxb服務(wù)器響應(yīng)給xxd服務(wù)器的信息去掉users字段后,發(fā)送給此會話包含的所有在線用戶(包括退出會話的當(dāng)前用戶)。
用戶可以更改類型為group的會話的名稱。
請求
{ userID, module: "chat", method: "changeName", params: [ gid, // 要更改的會話id name // 新的名稱 ] }
xxd把client發(fā)送的數(shù)據(jù)轉(zhuǎn)發(fā)給xxb。
響應(yīng)
{ module: "chat",
更多建議: