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);
});
当所有成员来到房间后,房间将主动销毁,同时反对设置房间提早销毁。