模組事件
一、聊天室資訊修改
Event 事件: ChatEvents.ChatInfoChange
回調參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
chatInfo |
聊天室資訊 | ChatModuleInfo |
二、聊天室連線失敗事件
說明: 當斷網或其他因素導致聊天室連線失敗時觸發該事件
Event 事件: ChatEvents.ChatConnectFail
回調參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
reason |
連線失敗原因 | ChatConnectFailReason |
範例:
watchCore.chat.eventEmitter.on(ChatEvents.ChatConnectFail, (data) => {
confirm({
message: '聊天室连接失败,无法与其他人互动,立即刷新重试?',
onConfirm: () => location.reload(),
});
});
三、聊天訊息事件
說明: 當收到聊天訊息後觸發該事件
Event 事件: ChatEvents.ChatMessage
回調參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
chatMsg |
聊天訊息物件 | ChatMsgType |
範例:
// 聊天消息列表
const chatMsgList: ChatMsgType[] = [];
// 聊天消息事件
watchCore.chat.eventEmitter.on(ChatEvents.ChatMessage, (data) => {
// 插入到聊天消息列表
chatMsgList.push(data.chatMsg);
// 渲染聊天消息...
});
四、替換聊天訊息事件
當呼叫 sendSpeakMsg 等發送訊息方法中,發送到伺服器端前就會回調 ChatEvents.ChatMessage 事件,此時訊息 id 為本地 id,發送到伺服器端並回調了訊息 id 後觸發該事件,收到該訊息後根據 id 更新成新的訊息物件和渲染資訊。
另外發送圖片訊息如果伺服器端檢測到違規圖後也透過該事件更新。
Event 事件: ChatEvents.ReplaceChatMessage
回調參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
id |
替換的訊息 id | string |
chatMsg |
新的訊息物件 | ChatMsgType |
範例:
watchCore.chat.eventEmitter.on(ChatEvents.ReplaceChatMessage, (data) => {
// 需要被替换的消息 id
const replaceId = data.id;
// 新的消息对象
const chatMsg = data.chatMsg;
const index = chatMsgList.findIndex((item) => item.id === replaceId);
if (index !== -1) {
chatMsgList[index] = chatMsg;
}
// 将视图的消息节点替换...
});
五、按讚事件
說明: 透過該事件監聽使用者的按讚事件
Event 事件: ChatEvents.ChatLike
回調參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
count |
按讚數 | number |
realtimeLikes |
即時按讚數 | number |
userId |
使用者 id | string |
nick |
使用者暱稱 | string |
isSelf |
是否自己按讚 | boolean |
範例:
watchCore.chat.eventEmitter.on(ChatEvents.ChatLike, (data) => {
console.log('实时点赞数:', data.realtimeLikes);
console.log('该观众的点赞次数', data.count);
console.log('点赞的观众 id', data.userId);
console.log('点赞的观众昵称', data.nick);
});
六、按讚數修改事件
說明: 透過該事件監聽按讚數改變事件,回調後更新頁面的按讚數顯示。
Event 事件: ChatEvents.ChatLikeCountChange
回調參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
realtimeLikes |
即時按讚數 | number |
範例:
watchCore.chat.eventEmitter.on(ChatEvents.ChatLikeCountChange, (data) => {
console.log('实时点赞数:', data.realtimeLikes);
});
七、聊天室使用者登入事件
說明: 有觀眾進入聊天室後觸發該事件
Event 事件: ChatEvents.ChatUserLogin
回調參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
user |
使用者資訊 | ChatMessageUser |
範例:
watchCore.chat.eventEmitter.on(ChatEvents.ChatUserLogin, (data) => {
const user = data.user;
toast.info(`欢迎 ${user.nick} 进入`);
});
八、聊天室使用者登出事件
說明: 當觀眾退出聊天室後觸發該事件
Event 事件: ChatEvents.ChatUserLogout
回調參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
userId |
使用者 userId | string |
範例:
watchCore.chat.eventEmitter.on(ChatEvents.ChatUserLogout, (data) => {
const userId = data.userId;
console.log('退出的用户 id', userId);
});
九、目前使用者重複登入事件
說明: 當使用者重複登入聊天室時觸發該事件,觸發後目前頁面將無法接收到任何聊天室訊息
Event 事件: ChatEvents.CurrentUserRelogin
範例:
watchCore.chat.eventEmitter.on(ChatEvents.CurrentUserRelogin, (data) => {
toast.errot('您已在其他地方登录,3 秒后将推出该页面');
setTimeout(() => {
location.replace('跳出到页面地址');
}, 3000);
});
十、清空聊天室事件
說明: 管理員清空聊天歷史記錄後觸發該事件
Event 事件: ChatEvents.ClearMsgHistory
範例:
watchCore.chat.eventEmitter.on(ChatEvents.ClearMsgHistory, () => {
console.log('管理员清空历史记录,todo 清空聊天记录列表');
});
十一、刪除某則訊息事件
說明: 管理員刪除某則歷史訊息後觸發該事件
Event 事件: ChatEvents.RemoveChatMsg
回調參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
id |
刪除的訊息 id | string |
範例:
watchCore.chat.eventEmitter.on(ChatEvents.RemoveChatMsg, (data) => {
console.log('管理员删除历史消息,删除的消息 id:', data.id);
});
十二、聊天室關閉事件
說明: 講師或管理員關閉聊天室後觸發該事件
Event 事件: ChatEvents.CloseChatRoom
範例:
watchCore.chat.eventEmitter.on(ChatEvents.CloseChatRoom, () => {
watchCore.chat.sendSystemMsg('聊天室已关闭');
});
十三、聊天室開啟事件
說明: 講師或管理員開啟聊天室後觸發該事件
Event 事件: ChatEvents.OpenChatRoom
範例:
watchCore.chat.eventEmitter.on(ChatEvents.CloseChatRoom, () => {
watchCore.chat.sendSystemMsg('聊天室已打开');
});
十四、線上人數改變事件
說明: 當觀眾上線/下線時,會回調該事件用於即時獲取線上人數
Event 事件: ChatEvents.OnlineUserCountChange
回調參數: Object 物件,詳細類型說明如下
| 屬性名 | 說明 | 類型 |
|---|---|---|
onlineUserCount |
即時線上人數 | number |
範例:
watchCore.chat.eventEmitter.on(ChatEvents.OnlineUserCountChange, (data) => {
console.log('在线人数改变:', data.onlineUserCount);
});
