IM多人聊天室功能簡介 ZIM SDK 提供多人房間聊天功能,支持用戶向房間內發送文本消息或自定義消息,實現了多人線上交流、同步分享。 多人房間聊天功能可應用於小班課或者會議室等場景,房間成員數量上限請參考 計費說明。 IM房間管理功能的前提條件 在實現“房間管理”功能之前,請確保: 已在 ZEGO ...
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)