当前页面展示的文档已停止维护,给您带来不便请谅解,单击链接可跳转至当前产品介绍页面 >>

聊天室

更新时间: 2025/04/29 09:37:32

请查阅集成方式来下载并引入 SDK 文件

聊天室功能概述

  • 目前不支持通过 SDK 接口建立/解散聊天室。
  • 进入聊天室时必须建立新的连接,退出聊天室或者被踢会断开连接,在聊天室中掉线会有自动重连,开发者需要监听聊天室连接状态来做出正确的界面表现。
  • 支持聊天人数无上限。
  • 聊天室只允许用户手动进入,无法进行邀请。
  • 支持同时进入多个聊天室,会建立多个连接。
  • 断开聊天室连接后,服务器不会再推送该聊天室的消息给此用户。
  • 在进行一切操作之前,必须先进入聊天室。即必须先初始化好聊天室并且收到onconnect回调。
  • 用户进入聊天室之后,不会收到此聊天室的历史消息推送。如有历史消息需求,可以调用消息查询接口进行显示。
  • 聊天室成员分固定成员和游客两种类型。

获取聊天室服务器地址

服务器接口-获取聊天室地址

初始化 & 连接

初始化聊天室之前,必须拿到聊天室服务器地址

当发生掉线时,SDK会自动进行重连。

匿名登录:

  • SDK支持用户以游客身份访问聊天室,即通过配置参数 isAnonymous: true实现
  • 第一次使用匿名方式登录聊天室时(新建实例),无需填写account参数,但需要在登录以后从chatroom实例中获取SDK生成的该参数
  • 使用匿名方式登录聊天室,必须填写用户昵称(非匿名方式为选填),建议填写头像
  • 为防止聊天室不断的被创建新实例,建议用户需要更新聊天室配置时(匿名模式),在update或第二次getInstance时,将前一次获取的account通过参数传入

初始化参数见 type ChatroomInitializeOptions,初始化事件见 ChatroomEventInterface

import ChatroomSDK from './Chatroom_UNIAPP_SDK'

const sdk = new ChatroomSDK({
  "appkey": "YOUR_APPKEY",
  "token": "YOUR_TOKEN",
  "account": "YOUR_ACCOUNT"
  "isAnonymous": false,
  "chatroomId": "YOUR_CHATROOM_ID",
  "chatroomAddresses": [
    "YOUR_CHATROOM_ADDR"
  ]
});
const eventList = [
  // 登陆完成事件
  'logined', 'willReconnect', 'disconnect',
  
  // 收到多端登陆通知触发事件
  'multiPortLogin', 'kicked',
  
  // 聊天室专有
  'chatroomMsg'

]
eventList.forEach((key: any) => {
  sdk.on(key, (res: any) => {
    console.log(`收到 ${key} 事件:`, res);
  });
})

await sdk.connect()
/** 匿名方式 */

// ...省略

const sdk = new ChatroomSDK({
  "appkey": "YOUR_APPKEY",
  "token": "YOUR_TOKEN",
  "account": "YOUR_ACCOUNT"
  "isAnonymous": true,
  "chatroomId": "YOUR_CHATROOM_ID",
  "chatroomAddresses": [
    "YOUR_CHATROOM_ADDR"
  ],
  chatroomNick: 'YOUR_NICK',
  chatroomAvatar: 'YOUR_AVATAR',
});

聊天室事件

参见 interface ChatroomEventInterface

  • logined 登录完成
  • disconnect 断开连接
  • willReconnect 即将开始重连
  • multiPortLogin 收到多端登录通知
  • kicked 被踢
  • chatroomMsg 收到聊天室信息
const sdk = new ChatroomSDK({
  //...
})
const eventList = [
  'logined', 'willReconnect', 'disconnect',
  'multiPortLogin', 'kicked',
  'chatroomMsg'
]
eventList.forEach((key: any) => {
  sdk.on(key, (res: any) => {
    console.log(`收到 ${key} 事件:`, res);
  });
})

退出

ChatroomInterface-disconnect

await sdk.disconnect()

断开聊天室连接后,可以再次调用 sdk.connect() 建立连接

销毁实例

ChatroomInterface-destroy

await sdk.destroy()

销毁后,无法再通过 sdk.connect() 建立连接,需要重新建立实例对象。

聊天室信息接口

聊天室消息接口

参见 interface ChatroomMsgServiceInterface

接口挂载在 sdk.chatroomMsg

发送消息相关

  • sendTextMsg 发送文本消息
  • sendGeoLocationMsg 发送地理位置消息
  • sendTipMsg 发送提醒消息
  • sendCustomMsg 发送自定义消息
  • sendImageMsg 发送图片消息
  • sendAudioMsg 发送音频消息
  • sendVideoMsg 发送视频消息
  • sendFileMsg 发送文件消息

查询历史消息 queryMessageHistory

例子

// A 用户发送
await sdk.chatroomMsg.sendTextMsg({
  body: 'This is a chatroomMsg'
})

// B 用户处接收
sdk.on('chatroomMsg', function(msg) {
  console.log('收到了消息', msg)
})
await sdk.chatroomMsg.queryMessageHistory({
  limit: 100
})

聊天室成员接口

参见 interface ChatroomMemberServiceInterface

接口挂载在 sdk.chatroomMember

  • queryMembers 获取成员列表
  • queryMembersByAccounts 获取成员信息

成员类型参见 type ChatroomMember

jsawait sdk.chatroomMember.queryMembers({
  "type": "regular",
  "limit": 100
})

管理聊天室成员

参见 interface ChatroomMemberServiceInterface

接口挂载在 sdk.chatroomMember

  • setMemberManager 设置管理员
  • setMemberBlackList 设置黑名单
  • setMemberMute 设置禁言
  • setMemberNormal 设置普通成员
  • kickMember 踢出成员
js// 添加管理员
await sdk.chatroomMember.setMemberManager({
  "account": "TARGET_ACCOUNT",
  "isAdd": true
})

// 删除管理员
await sdk.chatroomMember.setMemberManager({
  "account": "TARGET_ACCOUNT",
  "isAdd": false
})
此文档是否对你有帮助?
有帮助
去反馈
  • 聊天室功能概述
  • 获取聊天室服务器地址
  • 初始化 & 连接
  • 聊天室事件
  • 退出
  • 销毁实例
  • 聊天室信息接口
  • 聊天室消息接口
  • 聊天室成员接口
  • 管理聊天室成员