乐趣区

关于im:小程序轻松实现IM即时通讯多人聊天室

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 和其余客户端间接进入房间为例。

  1. 客户端 X 登录后,调用 enterRoom 接口,传入 ZIMRoomInfo 信息,进入房间;如果传入的 roomID 不存在,将会主动创立一个房间并进入该房间。
  2. 客户端 Y 及其他用户登录后,调用 enterRoom 接口,传入由 X 创立的房间 roomID,间接进入房间。
  3. 房间内的用户,同样能够应用 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);
});

当所有成员来到房间后,房间将主动销毁,同时反对设置房间提早销毁。

退出移动版