新聞中心
IM多人聊天室功能簡介
ZIM SDK 提供多人房間聊天功能,支持用戶向房間內(nèi)發(fā)送文本消息或自定義消息,實現(xiàn)了多人在線交流、同步分享。

創(chuàng)新互聯(lián)是專業(yè)的安仁網(wǎng)站建設(shè)公司,安仁接單;提供成都網(wǎng)站制作、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行安仁網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
多人房間聊天功能可應(yīng)用于小班課或者會議室等場景,房間成員數(shù)量上限請參考 計費(fèi)說明。
IM房間管理功能的前提條件
在實現(xiàn)“房間管理”功能之前,請確保:
- 已在 ZEGO 控制臺 創(chuàng)建項目,獲取到了接入 ZIM SDK 服務(wù)所需的 AppID、AppSign。ZIM 服務(wù)權(quán)限不是默認(rèn)開啟的,使用前,請先在 ZEGO 控制臺 自助開通 ZIM 服務(wù)(詳情請參考 項目管理 - 即時通訊),若無法開通 ZIM 服務(wù),請聯(lián)系 ZEGO 技術(shù)支持開通。
- 已集成 ZIM SDK,詳情請參考 快速開始 - 實現(xiàn)基本收發(fā)消息 的 “2 集成 SDK”。
實現(xiàn)IM多人聊天流程
用戶可以通過以下兩種方式,創(chuàng)建房間并進(jìn)入房間。
- 方式一:創(chuàng)建房間、加入房間:用戶 A 調(diào)用
createRoom接口,傳入ZIMRoomInfo信息,即可創(chuàng)建并加入房間。其他用戶調(diào)用joinRoom接口,傳入由 A 創(chuàng)建的房間 roomID,即可加入房間。 - 方式二:進(jìn)入房間:用戶 X 調(diào)用
enterRoom接口,傳入ZIMRoomInfo信息,如果 roomID 不存在,會自動創(chuàng)建一個房間然后進(jìn)入。其他用戶需要調(diào)用enterRoom接口,傳入由 X 創(chuàng)建的房間 roomID,進(jìn)入房間。
房間內(nèi)的用戶,可以通過 sendRoomMessage 接口,向房間內(nèi)發(fā)送消息,詳情請參考 收發(fā)房間消息。
如果 roomID 已存在:
- 調(diào)用
createRoom接口,會返回相關(guān)錯誤碼,詳情請參考 常見錯誤碼。 - 調(diào)用
enterRoom接口,會直接進(jìn)入此房間內(nèi)。
如果 roomID 不存在:
- 調(diào)用
createRoom接口,可以直接創(chuàng)建、并加入到此房間內(nèi)。 - 調(diào)用
enterRoom接口,會直接創(chuàng)建一個房間、并進(jìn)入到此房間內(nèi)。
創(chuàng)建即時通訊多人聊天房間、加入聊天房間
以下流程中,我們以客戶端 A 創(chuàng)建并加入房間,客戶端 B 和其他客戶端加入房間為例。
1. 創(chuàng)建多人聊天房間
客戶端 A 登錄后,創(chuàng)建一個房間,可以調(diào)用 createRoom 接口,傳入 ZIMRoomInfo 信息,即可創(chuàng)建并加入房間。同時可以通過錯誤碼 ZIMError 的參數(shù)值,判斷是否創(chuàng)建成功。相關(guān)錯誤碼請查看 常見錯誤碼。
- “roomID”、“roomName” 支持開發(fā)者自定義規(guī)則生成。建議開發(fā)者將 “roomID” 設(shè)置為一個有意義的值,可將其與自己的業(yè)務(wù)賬號系統(tǒng)進(jìn)行關(guān)聯(lián)。
- 調(diào)用
createRoom接口創(chuàng)建房間后,會直接加入房間,無需再調(diào)用joinRoom接口加入房間。
var roomInfo = { roomID: '', roomName: '' };
zim.createRoom(roomInfo)
.then(function ({ roomInfo }) {
// 操作成功
})
.catch(function (err) {
// 操作失敗
});
2. 加入IM多人聊天房間
客戶端 B 和其他客戶端先后加入房間,可以調(diào)用 joinRoom 接口,傳入由 A 創(chuàng)建的房間 roomID,即可加入房間。同時可以通過錯誤碼 ZIMError 的參數(shù)值,判斷是否創(chuàng)建成功。相關(guān)錯誤碼請查看 常見錯誤碼。
var roomID = '';
zim.joinRoom(roomID)
.then(function ({ roomInfo }) {
// 操作成功
})
.catch(function (err) {
// 操作失敗
});
3. IM聊天房間成員變動通知
當(dāng)房間有其他成員加入時,將通過 on 的回調(diào)接口 roomMemberJoined,向其他已在成員發(fā)送消息通知。
例如,當(dāng)客戶端 B 加入由 A 創(chuàng)建的房間時,A 將收到房間內(nèi)成員變動的通知。
// 加入房間通知,通過該通知收到加入房間的用戶信息
zim.on('roomMemberJoined', function (zim, { roomID, memberList }) {
console.log(roomID, memberList);
});
進(jìn)入多人聊天房間
以下流程中,我們以客戶端 X 創(chuàng)建并進(jìn)入房間,客戶端 Y 和其他客戶端直接進(jìn)入房間為例。
- 客戶端 X 登錄后,調(diào)用
enterRoom接口,傳入ZIMRoomInfo信息,進(jìn)入房間;如果傳入的 roomID 不存在,將會自動創(chuàng)建一個房間并進(jìn)入該房間。 - 客戶端 Y 及其他用戶登錄后,調(diào)用
enterRoom接口,傳入由 X 創(chuàng)建的房間 roomID,直接進(jìn)入房間。 - 房間內(nèi)的用戶,同樣可以使用
on的回調(diào)接口roomMemberJoined方法,實現(xiàn)對房間內(nèi)成員加入的監(jiān)聽。
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 如果想要離開房間,可以調(diào)用 leaveRoom 接口,傳入房間的 roomID,即可退出此房間;房間內(nèi)的其他用戶可以通過 on 的回調(diào)接口 roomMemberLeft,收到成員變動通知。
離開房間后,將不能收到房間內(nèi)的消息。
var roomID = '';
zim.leaveRoom(roomID)
.then(function ({ roomID }) {
// 操作成功
})
.catch(function (err) {
// 操作失敗
});
// 離開房間通知,通過該通知收到離開房間的用戶信息
zim.on('roomMemberLeft', function (zim, { roomID, memberList }) {
console.log(roomID, memberList);
});
當(dāng)所有成員離開房間后,房間將自動銷毀,同時支持設(shè)置房間延遲銷毀。
本文題目:小程序輕松實現(xiàn)IM即時通訊多人聊天室
文章出自:http://www.dlmjj.cn/article/dsojgie.html


咨詢
建站咨詢
