ZIM SDK 提供多人房間聊天功能,支持用戶向房間內(nèi)發(fā)送文本消息或自定義消息,實(shí)現(xiàn)了多人在線交流、同步分享。
創(chuàng)新互聯(lián)是專業(yè)的安仁網(wǎng)站建設(shè)公司,安仁接單;提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行安仁網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
多人房間聊天功能可應(yīng)用于小班課或者會(huì)議室等場(chǎng)景,房間成員數(shù)量上限請(qǐng)參考 計(jì)費(fèi)說明。
在實(shí)現(xiàn)“房間管理”功能之前,請(qǐng)確保:
用戶可以通過以下兩種方式,創(chuàng)建房間并進(jìn)入房間。
createRoom
接口,傳入 ZIMRoomInfo
信息,即可創(chuàng)建并加入房間。其他用戶調(diào)用 joinRoom
接口,傳入由 A 創(chuàng)建的房間 roomID,即可加入房間。enterRoom
接口,傳入 ZIMRoomInfo
信息,如果 roomID 不存在,會(huì)自動(dòng)創(chuàng)建一個(gè)房間然后進(jìn)入。其他用戶需要調(diào)用 enterRoom
接口,傳入由 X 創(chuàng)建的房間 roomID,進(jìn)入房間。房間內(nèi)的用戶,可以通過 sendRoomMessage
接口,向房間內(nèi)發(fā)送消息,詳情請(qǐng)參考 收發(fā)房間消息。
如果 roomID 已存在:
createRoom
接口,會(huì)返回相關(guān)錯(cuò)誤碼,詳情請(qǐng)參考 常見錯(cuò)誤碼。enterRoom
接口,會(huì)直接進(jìn)入此房間內(nèi)。如果 roomID 不存在:
createRoom
接口,可以直接創(chuàng)建、并加入到此房間內(nèi)。enterRoom
接口,會(huì)直接創(chuàng)建一個(gè)房間、并進(jìn)入到此房間內(nèi)。以下流程中,我們以客戶端 A 創(chuàng)建并加入房間,客戶端 B 和其他客戶端加入房間為例。
客戶端 A 登錄后,創(chuàng)建一個(gè)房間,可以調(diào)用 createRoom
接口,傳入 ZIMRoomInfo
信息,即可創(chuàng)建并加入房間。同時(shí)可以通過錯(cuò)誤碼 ZIMError
的參數(shù)值,判斷是否創(chuàng)建成功。相關(guān)錯(cuò)誤碼請(qǐng)查看 常見錯(cuò)誤碼。
createRoom
接口創(chuàng)建房間后,會(huì)直接加入房間,無需再調(diào)用 joinRoom
接口加入房間。var roomInfo = { roomID: '', roomName: '' };
zim.createRoom(roomInfo)
.then(function ({ roomInfo }) {
// 操作成功
})
.catch(function (err) {
// 操作失敗
});
客戶端 B 和其他客戶端先后加入房間,可以調(diào)用 joinRoom
接口,傳入由 A 創(chuàng)建的房間 roomID,即可加入房間。同時(shí)可以通過錯(cuò)誤碼 ZIMError
的參數(shù)值,判斷是否創(chuàng)建成功。相關(guān)錯(cuò)誤碼請(qǐng)查看 常見錯(cuò)誤碼。
var roomID = '';
zim.joinRoom(roomID)
.then(function ({ roomInfo }) {
// 操作成功
})
.catch(function (err) {
// 操作失敗
});
當(dāng)房間有其他成員加入時(shí),將通過 on
的回調(diào)接口 roomMemberJoined
,向其他已在成員發(fā)送消息通知。
例如,當(dāng)客戶端 B 加入由 A 創(chuàng)建的房間時(shí),A 將收到房間內(nèi)成員變動(dòng)的通知。
// 加入房間通知,通過該通知收到加入房間的用戶信息
zim.on('roomMemberJoined', function (zim, { roomID, memberList }) {
console.log(roomID, memberList);
});
以下流程中,我們以客戶端 X 創(chuàng)建并進(jìn)入房間,客戶端 Y 和其他客戶端直接進(jìn)入房間為例。
enterRoom
接口,傳入 ZIMRoomInfo
信息,進(jìn)入房間;如果傳入的 roomID 不存在,將會(huì)自動(dòng)創(chuàng)建一個(gè)房間并進(jìn)入該房間。enterRoom
接口,傳入由 X 創(chuàng)建的房間 roomID,直接進(jìn)入房間。on
的回調(diào)接口 roomMemberJoined
方法,實(shí)現(xiàn)對(duì)房間內(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);
});
客戶端 B 如果想要離開房間,可以調(diào)用 leaveRoom
接口,傳入房間的 roomID,即可退出此房間;房間內(nèi)的其他用戶可以通過 on
的回調(diào)接口 roomMemberLeft
,收到成員變動(dòng)通知。
離開房間后,將不能收到房間內(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)所有成員離開房間后,房間將自動(dòng)銷毀,同時(shí)支持設(shè)置房間延遲銷毀。