Skip to content

Commit

Permalink
feat: 原始消息内容 (#14)
Browse files Browse the repository at this point in the history
  • Loading branch information
ddiu8081 committed Dec 1, 2022
1 parent 7573c2a commit 4cf2ac1
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 14 deletions.
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -65,6 +65,8 @@ export interface Message<T> {
type: string,
/** 消息内容 */
body: T
/** 原始消息内容 */
raw: any
}

export interface User {
Expand Down
26 changes: 13 additions & 13 deletions src/listener/index.ts
Expand Up @@ -64,23 +64,23 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
if (handler[HEARTBEAT.handlerName]) {
instance.on(HEARTBEAT.eventName, (data: WSMessage<any>) => {
const parsedData = HEARTBEAT.parser(data.data)
handler[HEARTBEAT.handlerName]?.(normalizeDanmu(HEARTBEAT.eventName, parsedData))
handler[HEARTBEAT.handlerName]?.(normalizeDanmu(HEARTBEAT.eventName, parsedData, data.data))
})
}

// LIVE
if (handler[LIVE.handlerName]) {
instance.on(LIVE.eventName, (data: WSMessage<any>) => {
const parsedData = LIVE.parser(data.data)
handler[LIVE.handlerName]?.(normalizeDanmu(LIVE.eventName, parsedData))
handler[LIVE.handlerName]?.(normalizeDanmu(LIVE.eventName, parsedData, data.data))
})
}

// PREPARING
if (handler[PREPARING.handlerName]) {
instance.on(PREPARING.eventName, (data: WSMessage<any>) => {
const parsedData = PREPARING.parser(data.data)
handler[PREPARING.handlerName]?.(normalizeDanmu(PREPARING.eventName, parsedData))
handler[PREPARING.handlerName]?.(normalizeDanmu(PREPARING.eventName, parsedData, data.data))
})
}

Expand All @@ -90,7 +90,7 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
const handleDanmuMsg = (data: WSMessage<any>) => {
const parsedData = DANMU_MSG.parser(data.data, roomId)
if (checkIsDuplicateDanmuMsg(parsedData)) return
msgCallback(normalizeDanmu(DANMU_MSG.eventName, parsedData))
msgCallback(normalizeDanmu(DANMU_MSG.eventName, parsedData, data.data))
}
instance.on(DANMU_MSG.eventName, handleDanmuMsg)
instance.on(DANMU_MSG_402220.eventName, handleDanmuMsg)
Expand All @@ -100,67 +100,67 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
if (handler[GUARD_BUY.handlerName]) {
instance.on(GUARD_BUY.eventName, (data: WSMessage<any>) => {
const parsedData = GUARD_BUY.parser(data.data)
handler[GUARD_BUY.handlerName]?.(normalizeDanmu(GUARD_BUY.eventName, parsedData))
handler[GUARD_BUY.handlerName]?.(normalizeDanmu(GUARD_BUY.eventName, parsedData, data.data))
})
}

// INTERACT_WORD, ENTRY_EFFECT
if (handler[INTERACT_WORD.handlerName] || handler[ENTRY_EFFECT.handlerName]) {
instance.on(INTERACT_WORD.eventName, (data: WSMessage<any>) => {
const parsedData = INTERACT_WORD.parser(data.data, roomId)
handler[INTERACT_WORD.handlerName]?.(normalizeDanmu(INTERACT_WORD.eventName, parsedData))
handler[INTERACT_WORD.handlerName]?.(normalizeDanmu(INTERACT_WORD.eventName, parsedData, data.data))
})
instance.on(ENTRY_EFFECT.eventName, (data: WSMessage<any>) => {
const parsedData = ENTRY_EFFECT.parser(data.data, roomId)
handler[ENTRY_EFFECT.handlerName]?.(normalizeDanmu(ENTRY_EFFECT.eventName, parsedData))
handler[ENTRY_EFFECT.handlerName]?.(normalizeDanmu(ENTRY_EFFECT.eventName, parsedData, data.data))
})
}

// LIKE_INFO_V3_UPDATE
if (handler[LIKE_INFO_V3_UPDATE.handlerName]) {
instance.on(LIKE_INFO_V3_UPDATE.eventName, (data: WSMessage<any>) => {
const parsedData = LIKE_INFO_V3_UPDATE.parser(data.data)
handler[LIKE_INFO_V3_UPDATE.handlerName]?.(normalizeDanmu(LIKE_INFO_V3_UPDATE.eventName, parsedData))
handler[LIKE_INFO_V3_UPDATE.handlerName]?.(normalizeDanmu(LIKE_INFO_V3_UPDATE.eventName, parsedData, data.data))
})
}

// ONLINE_RANK_COUNT
if (handler[ONLINE_RANK_COUNT.handlerName]) {
instance.on(ONLINE_RANK_COUNT.eventName, (data: WSMessage<any>) => {
const parsedData = ONLINE_RANK_COUNT.parser(data.data)
handler[ONLINE_RANK_COUNT.handlerName]?.(normalizeDanmu(ONLINE_RANK_COUNT.eventName, parsedData))
handler[ONLINE_RANK_COUNT.handlerName]?.(normalizeDanmu(ONLINE_RANK_COUNT.eventName, parsedData, data.data))
})
}

// ROOM_CHANGE
if (handler[ROOM_CHANGE.handlerName]) {
instance.on(ROOM_CHANGE.eventName, (data: WSMessage<any>) => {
const parsedData = ROOM_CHANGE.parser(data.data)
handler[ROOM_CHANGE.handlerName]?.(normalizeDanmu(ROOM_CHANGE.eventName, parsedData))
handler[ROOM_CHANGE.handlerName]?.(normalizeDanmu(ROOM_CHANGE.eventName, parsedData, data.data))
})
}

// SEND_GIFT
if (handler[SEND_GIFT.handlerName]) {
instance.on(SEND_GIFT.eventName, (data: WSMessage<any>) => {
const parsedData = SEND_GIFT.parser(data.data)
handler[SEND_GIFT.handlerName]?.(normalizeDanmu(SEND_GIFT.eventName, parsedData))
handler[SEND_GIFT.handlerName]?.(normalizeDanmu(SEND_GIFT.eventName, parsedData, data.data))
})
}

// SUPER_CHAT_MESSAGE
if (handler[SUPER_CHAT_MESSAGE.handlerName]) {
instance.on(SUPER_CHAT_MESSAGE.eventName, (data: WSMessage<any>) => {
const parsedData = SUPER_CHAT_MESSAGE.parser(data.data, roomId)
handler[SUPER_CHAT_MESSAGE.handlerName]?.(normalizeDanmu(SUPER_CHAT_MESSAGE.eventName, parsedData))
handler[SUPER_CHAT_MESSAGE.handlerName]?.(normalizeDanmu(SUPER_CHAT_MESSAGE.eventName, parsedData, data.data))
})
}

// WATCHED_CHANGE
if (handler[WATCHED_CHANGE.handlerName]) {
instance.on(WATCHED_CHANGE.eventName, (data: WSMessage<any>) => {
const parsedData = WATCHED_CHANGE.parser(data.data)
handler[WATCHED_CHANGE.handlerName]?.(normalizeDanmu(WATCHED_CHANGE.eventName, parsedData))
handler[WATCHED_CHANGE.handlerName]?.(normalizeDanmu(WATCHED_CHANGE.eventName, parsedData, data.data))
})
}
}
2 changes: 2 additions & 0 deletions src/types/app.ts
Expand Up @@ -51,4 +51,6 @@ export interface Message<T> {
type: string,
/** 消息内容 */
body: T
/** 原始消息内容 */
raw: any
}
3 changes: 2 additions & 1 deletion src/utils/message.ts
Expand Up @@ -20,7 +20,7 @@ class MsgQueue {

const msgQueue = new MsgQueue()

export const normalizeDanmu = <T>(msgType: string, body: T): Message<T> => {
export const normalizeDanmu = <T>(msgType: string, body: T, rawBody: any): Message<T> => {
const timestamp = Date.now()
const randomText = Math.floor(Math.random() * 10000).toString()
// @ts-ignore
Expand All @@ -30,6 +30,7 @@ export const normalizeDanmu = <T>(msgType: string, body: T): Message<T> => {
timestamp,
type: msgType,
body,
raw: rawBody,
}
}

Expand Down

0 comments on commit 4cf2ac1

Please sign in to comment.