IM多人聊天室功能簡介
ZIM SDK 提供多人房間聊天功能,支持用戶向房間內發送文本訊息或自定義訊息,實作了多人在線交流、同步分享,
多人房間聊天功能可應用于小班課或者會議室等場景,房間成員數量上限請參考 計費說明,
IM房間管理功能的前提條件
在實作“房間管理”功能之前,請確保:
- 已在 ZEGO 控制臺 創建專案,獲取到了接入 ZIM SDK 服務所需的 AppID、AppSign,ZIM 服務權限不是默認開啟的,使用前,請先在 ZEGO 控制臺 自助開通 ZIM 服務(詳情請參考 專案管理 - 即時通訊),若無法開通 ZIM 服務,請聯系 ZEGO 技術支持開通,
- 已集成 ZIM SDK,詳情請參考 快速開始 - 實作基本收發訊息 的 “2 集成 SDK”,
實作IM多人聊天流程
用戶可以通過以下兩種方式,創建房間并進入房間,
- 方式一:創建房間、加入房間:用戶 A 呼叫
createRoom介面,傳入ZIMRoomInfo資訊,即可創建并加入房間,其他用戶呼叫joinRoom介面,傳入由 A 創建的房間 roomID,即可加入房間, - 方式二:進入房間:用戶 X 呼叫
enterRoom介面,傳入ZIMRoomInfo資訊,如果 roomID 不存在,會自動創建一個房間然后進入,其他用戶需要呼叫enterRoom介面,傳入由 X 創建的房間 roomID,進入房間,
房間內的用戶,可以通過 sendRoomMessage 介面,向房間內發送訊息,詳情請參考 收發房間訊息,
如果 roomID 已存在:
- 呼叫
createRoom介面,會回傳相關錯誤碼,詳情請參考 常見錯誤碼, - 呼叫
enterRoom介面,會直接進入此房間內,
如果 roomID 不存在:
- 呼叫
createRoom介面,可以直接創建、并加入到此房間內, - 呼叫
enterRoom介面,會直接創建一個房間、并進入到此房間內,
創建即時通訊多人聊天房間、加入聊天房間
以下流程中,我們以客戶端 A 創建并加入房間,客戶端 B 和其他客戶端加入房間為例,

1. 創建多人聊天房間
客戶端 A 登錄后,創建一個房間,可以呼叫 createRoom 介面,傳入 ZIMRoomInfo 資訊,即可創建并加入房間,同時可以通過錯誤碼 ZIMError 的引數值,判斷是否創建成功,相關錯誤碼請查看 常見錯誤碼,
- “roomID”、“roomName” 支持開發者自定義規則生成,建議開發者將 “roomID” 設定為一個有意義的值,可將其與自己的業務賬號系統進行關聯,
- 呼叫
createRoom介面創建房間后,會直接加入房間,無需再呼叫joinRoom介面加入房間,
var roomInfo = { roomID: '', roomName: '' };
zim.createRoom(roomInfo)
.then(function ({ roomInfo }) {
// 操作成功
})
.catch(function (err) {
// 操作失敗
});
2. 加入IM多人聊天房間
客戶端 B 和其他客戶端先后加入房間,可以呼叫 joinRoom 介面,傳入由 A 創建的房間 roomID,即可加入房間,同時可以通過錯誤碼 ZIMError 的引數值,判斷是否創建成功,相關錯誤碼請查看 常見錯誤碼,
var roomID = '';
zim.joinRoom(roomID)
.then(function ({ roomInfo }) {
// 操作成功
})
.catch(function (err) {
// 操作失敗
});
3. IM聊天房間成員變動通知
當房間有其他成員加入時,將通過 on 的回呼介面 roomMemberJoined,向其他已在成員發送訊息通知,
例如,當客戶端 B 加入由 A 創建的房間時,A 將收到房間內成員變動的通知,
// 加入房間通知,通過該通知收到加入房間的用戶資訊
zim.on('roomMemberJoined', function (zim, { roomID, memberList }) {
console.log(roomID, memberList);
});
進入多人聊天房間
以下流程中,我們以客戶端 X 創建并進入房間,客戶端 Y 和其他客戶端直接進入房間為例,

- 客戶端 X 登錄后,呼叫
enterRoom介面,傳入ZIMRoomInfo資訊,進入房間;如果傳入的 roomID 不存在,將會自動創建一個房間并進入該房間, - 客戶端 Y 及其他用戶登錄后,呼叫
enterRoom介面,傳入由 X 創建的房間 roomID,直接進入房間, - 房間內的用戶,同樣可以使用
on的回呼介面roomMemberJoined方法,實作對房間內成員加入的監聽,
var roomInfo = { roomID: '', roomName: '' };
zim.enterRoom(roomInfo)
.then(function ({ roomInfo }) {
// 操作成功
})
.catch(function (err) {
// 操作失敗
});
// 加入房間通知,通過該通知收到加入房間的用戶資訊
zim.on('roomMemberJoined', function (zim, { roomID, memberList }) {
console.log(roomID, memberList);
});
離開IM聊天房間
客戶端 B 如果想要離開房間,可以呼叫 leaveRoom 介面,傳入房間的 roomID,即可退出此房間;房間內的其他用戶可以通過 on 的回呼介面 roomMemberLeft,收到成員變動通知,
離開房間后,將不能收到房間內的訊息,

var roomID = '';
zim.leaveRoom(roomID)
.then(function ({ roomID }) {
// 操作成功
})
.catch(function (err) {
// 操作失敗
});
// 離開房間通知,通過該通知收到離開房間的用戶資訊
zim.on('roomMemberLeft', function (zim, { roomID, memberList }) {
console.log(roomID, memberList);
});
當所有成員離開房間后,房間將自動銷毀,同時支持設定房間延遲銷毀,
音視頻場景解決方案分享,更多詳情可搜索官網(https://zegoguanwang.datasink.sensorsdata.cn/t/pB)轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505530.html
標籤:JavaScript
上一篇:高級前端進階(六)
