跳到主要内容

加入聊天室

应用程序后端通过即时通讯服务端 API 创建聊天室,将聊天室 ID 下分发至客户端。客户端获取聊天室 ID 后可加入聊天室。SDK 断网重连后会自动重新加入聊天室,不需要应用程序额外处理。

应用程序后端可以通过提前注册服务端回调聊天室状态同步,收取聊天室创建成功与成员加入等事件通知。客户端可以通过监听聊天室事件收取相关通知。

局限

  • 默认同一用户不能同时加入多个聊天室。用户加入新的聊天室后会自动退出之前的聊天室。您可以在控制台启用单个用户加入多个聊天室
  • 客户端的加入聊天室方法允许在加入时获取最新的历史消息(默认 10 条,最多 50 条),但不支持指定消息类型。您可以在控制台启用加入聊天室获取指定消息配置,限制加入聊天室时只获取指定类型的消息。

加入已存在的聊天室

加入一个已存在的聊天室。如果该聊天室不存在,则返回错误码 ChatroomNotExist = 23410

    let roomId = "聊天室 id";
let msgCount = 10;

IMEngine.getInstance().joinExistingChatroom(roomId, msgCount).then(result => {
if (EngineError.Success !== result.code) {
// 加入聊天室失败
return;
}
if (!result.data) {
// 聊天室加入信息失败
return;
}
let joinedInfo = result.data as ChatroomJoinedInfo;
});
/**
* 加入聊天室成功后获取的聊天室基本信息
* @version 1.0.0
*/
class ChatroomJoinedInfo {
/**
* 聊天室的创建时间,毫秒时间戳
*/
createTime: number = 0;
/**
* 当前聊天室人数
*/
memberCount: number = 0;
/**
* 是否全局禁言
*/
isAllChatroomBanned: boolean = false;
/**
* 是否当前用户被禁言
*/
isCurrentUserBanned: boolean = false;
/**
* 当前用户是否在此聊天室被禁言
*/
isCurrentChatroomBanned: boolean = false;
/**
* 当前用户是否在此聊天室的白名单中
*/
isCurrentChatroomInWhiteList: boolean = false;
}

加入聊天室

joinChatroom 接口会创建并加入聊天室。如果聊天室已存在,则直接加入。

提示

此功能在 1.0.2 版本开始支持。

    let roomId = "聊天室 id";
let msgCount = 10;

IMEngine.getInstance().joinChatroom(roomId, msgCount).then(result => {
if (EngineError.Success !== result.code) {
// 加入聊天室失败
return;
}
if (!result.data) {
// 聊天室加入信息失败
return;
}
let joinedInfo = result.data as ChatroomJoinedInfo;
});

断线重连后重新加入聊天室

SDK 具备断线重连机制。重连成功后,如果当前登录用户曾经加入过聊天室,且没有退出,则 SDK 会自动重新加入聊天室,不需要 App 处理。App 可以通过监听聊天室状态收到通知。

提示

断网重连的场景下,一旦 SDK 重新加入聊天室成功,会自动收取一定数量的聊天室消息。

SDK 会按照加入聊天室时传入的 msgCount 拉取固定数量的消息。拉取的消息有可能在本地已存在,App 可能需要进行排重后再显示。