消息服务总类
| 方法 | 方法描述 |
|---|---|
| VHIMServer.sendMessage | 发送聊天消息 |
| VHIMServer.sendMessageToTarget | 给指定用户发送消息 |
| VHIMServer.sendTypeMessage | 发送图片等类型消息 |
| VHSaaSDK.getInstance().chatGetList | 获取当前房间聊天历史记录 |
消息回调
| 方法 | 方法描述 |
|---|---|
| imReceiveChatMessage | 接收聊天消息 |
| imReceiveOnlineMessage | 接收上下线消息 |
| imReceiveCustomMessage | 接收自定义消息 |
| imReceiveRoomMessage | 接收房间消息 |
| imSDKError | 错误回调 |
| onVHNetworkConnect | 消息服务连接成功 |
| onVHNetworkDisconnect | 监听消息服务异常监听 |
| onVHNetworkConnecting | 消息服务连接正在重新链接 |
aboutToAppear(){
...
this.imBase = new VHIMServer(this);//创建im实例
this.imBase.join(this.webinar_info!);//设置消息回调
...
}
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| message | 是 | 消息内容 | |
| callBack | 是 | 回调 |
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| message | 是 | 消息内容 | |
| targetId | 是 | 指定某人传入对应id,群聊传入空字符串'' | |
| type | 是 | 1 |
| 参数名称 | 是否必须 | 示例 | 备注 |
|---|---|---|---|
| roomId | 是 | 123223332 | 房间id |
| pos | 是 | 0 | 获取条目节点 |
| limit | 是 | 50 | 获取条目数量 |
| msgId | 是 | 获取条目数量,聊天记录 锚点消息id,此参数存在时anchor_path 参数必须存在 | |
| anchorPath | 是 | 锚点方向,up 向上查找,down 向下查找,此参数存在时 msg_id 参数必须存在 | |
| isRole | 是 | 0:不筛选主办方 1:筛选主办方 默认是0 | |
| msgType | 是 | 0: 全部消息(text,image,system_notice)1: 互动消息,提示类消息(system_notice) 2: 图文消息(text,image) 默认是图文消息(兼容app,sdk) | |
| keyword | 是 | 搜索关键字 支持昵称和聊天内容 控制台互动统计生效 | |
| chatAuditStatus | 是 | 审核状态, 1 审核通过,2 审核拒绝,3 待审核,不传默认为 1 |
| VHIMMessageModel消息体 | 类型 | 描述 |
|---|---|---|
| msg_id | string | 消息ID |
| channel | string | 频道ID |
| event | string | 消息事件类型 |
| date_time | string | 时间 |
| third_party_user_id | string | 发送者三方用户id |
| connection_online_num | number | 连线人数 |
| user_online_num | number | 在线人数 |
| client | string | 客户 |
| dataJson | string | data数据 |
| avatar | string | 发送者头像 |
| nick_name | string | 发送者昵称 |
| service_type | string | 服务类型 |
| sender_id | string | 发送者id |
| context | string | 发送的自定义消息 |
| pv | number | 直播中观看次数 |
| uv | number | 直播中观看人数 |
| bu | number | 业务单元 |
| key | string | 关键字 |
| data | object | 消息体 |
对应VHIMMessageModel转换为VHContent
| VHContent | 类型 | 描述 |
|---|---|---|
| avatar | string | 头像 |
| nickname | string | 昵称 |
| data | VHMsgData | 消息体 |
| date_time | string | 时间 |
| image_urls | string | 图片资源 |
| role_name | string | 角色 1 主持人,2 观众,3 助理,4 嘉宾 |
| msg_id | string | 消息id |
对应VHIMMessageModel.data消息内容
| VHMsgData消息内容 | 类型 | 描述 |
|---|---|---|
| type | string | 消息类型,text 文本 image 图片 |
| barrage | string | 消息内容 |
| text_content | string | 消息内容 |
| nickname | string | 昵称 |
| avatar | string | 头像 |
| image_urls | string | 聊天图片列表 |
| event_type | string | 站点类型 |
| target_id | string | 目标id,用于私聊 |
imReceiveRoomMessage 包含:礼物消息、禁言、聊天昵称加密、删除聊天消息等
imReceiveRoomMessage(type: string, message: VHIMMessageModel) {
console.log("接收房间消息:", message);
if (type == VHRoomEventType.GIFT_MSG) { // 礼物消息
EmitterMessage.handleGiftMsg(message);
}else if(type == VHRoomEventType.IM_BANNED_MODE_UPDATE){//禁言感知状态
this.handleBannedModeUpdate( message);
}else if(type == VHRoomEventType.IM_CHAT_NICK_NAME_ENCRYPTION){//聊天昵称加密
this.handleChatNicknameEncryption( message);
} else if(type == VHRoomEventType.CHAT_DELETE){ //删除聊天消息
EmitterMessage.handleChatDelete(message);
}
}imReceiveOnlineMessage
onVHNetworkDisconnect
onVHNetworkDisconnect(code: number, message: string): void {
ToastUtil.showToast("消息服务已断开")
if (this.imConnectTimer != -1) {
return;
}
//启用定时器进行重连。
this.imConnectTimer = setTimeout(() => {
//重连只需要重新调用join方法
this.imBase?.join(this.webinar_info!);
this.imConnectTimer = -1;
}, RECONNECT_TIMEOUT);
}imReceiveChatMessage
imReceiveChatMessage(type: string, message: VHIMMessageModel) {
if (type === VHRoomEventType.IM_TEXT) {
let newMsg = message as VHContent;
if (newMsg.data!.target_id !== undefined && newMsg.data!.target_id.length > 0) {
// 如果是私聊消息,需要产生tab
this.addPrivateChatTab(JSON.stringify(message));
EmitterMessage.handleChatImText(type, message);
} else {
EmitterMessage.handleChatImText(type, message);
}
}
// 点赞消息
if (type === VHRoomEventType.CUSTOM_PRAISE) {
EmitterMessage.handleCustomMessage(type, message);
}
}