Skip to content

Commit 4cf2ac1

Browse files
committed
feat: 原始消息内容 (#14)
1 parent 7573c2a commit 4cf2ac1

File tree

4 files changed

+19
-14
lines changed

4 files changed

+19
-14
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ export interface Message<T> {
6565
type: string,
6666
/** 消息内容 */
6767
body: T
68+
/** 原始消息内容 */
69+
raw: any
6870
}
6971

7072
export interface User {

src/listener/index.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -64,23 +64,23 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
6464
if (handler[HEARTBEAT.handlerName]) {
6565
instance.on(HEARTBEAT.eventName, (data: WSMessage<any>) => {
6666
const parsedData = HEARTBEAT.parser(data.data)
67-
handler[HEARTBEAT.handlerName]?.(normalizeDanmu(HEARTBEAT.eventName, parsedData))
67+
handler[HEARTBEAT.handlerName]?.(normalizeDanmu(HEARTBEAT.eventName, parsedData, data.data))
6868
})
6969
}
7070

7171
// LIVE
7272
if (handler[LIVE.handlerName]) {
7373
instance.on(LIVE.eventName, (data: WSMessage<any>) => {
7474
const parsedData = LIVE.parser(data.data)
75-
handler[LIVE.handlerName]?.(normalizeDanmu(LIVE.eventName, parsedData))
75+
handler[LIVE.handlerName]?.(normalizeDanmu(LIVE.eventName, parsedData, data.data))
7676
})
7777
}
7878

7979
// PREPARING
8080
if (handler[PREPARING.handlerName]) {
8181
instance.on(PREPARING.eventName, (data: WSMessage<any>) => {
8282
const parsedData = PREPARING.parser(data.data)
83-
handler[PREPARING.handlerName]?.(normalizeDanmu(PREPARING.eventName, parsedData))
83+
handler[PREPARING.handlerName]?.(normalizeDanmu(PREPARING.eventName, parsedData, data.data))
8484
})
8585
}
8686

@@ -90,7 +90,7 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
9090
const handleDanmuMsg = (data: WSMessage<any>) => {
9191
const parsedData = DANMU_MSG.parser(data.data, roomId)
9292
if (checkIsDuplicateDanmuMsg(parsedData)) return
93-
msgCallback(normalizeDanmu(DANMU_MSG.eventName, parsedData))
93+
msgCallback(normalizeDanmu(DANMU_MSG.eventName, parsedData, data.data))
9494
}
9595
instance.on(DANMU_MSG.eventName, handleDanmuMsg)
9696
instance.on(DANMU_MSG_402220.eventName, handleDanmuMsg)
@@ -100,67 +100,67 @@ export const listenAll = (instance: KeepLiveTCP | KeepLiveWS, roomId: number, ha
100100
if (handler[GUARD_BUY.handlerName]) {
101101
instance.on(GUARD_BUY.eventName, (data: WSMessage<any>) => {
102102
const parsedData = GUARD_BUY.parser(data.data)
103-
handler[GUARD_BUY.handlerName]?.(normalizeDanmu(GUARD_BUY.eventName, parsedData))
103+
handler[GUARD_BUY.handlerName]?.(normalizeDanmu(GUARD_BUY.eventName, parsedData, data.data))
104104
})
105105
}
106106

107107
// INTERACT_WORD, ENTRY_EFFECT
108108
if (handler[INTERACT_WORD.handlerName] || handler[ENTRY_EFFECT.handlerName]) {
109109
instance.on(INTERACT_WORD.eventName, (data: WSMessage<any>) => {
110110
const parsedData = INTERACT_WORD.parser(data.data, roomId)
111-
handler[INTERACT_WORD.handlerName]?.(normalizeDanmu(INTERACT_WORD.eventName, parsedData))
111+
handler[INTERACT_WORD.handlerName]?.(normalizeDanmu(INTERACT_WORD.eventName, parsedData, data.data))
112112
})
113113
instance.on(ENTRY_EFFECT.eventName, (data: WSMessage<any>) => {
114114
const parsedData = ENTRY_EFFECT.parser(data.data, roomId)
115-
handler[ENTRY_EFFECT.handlerName]?.(normalizeDanmu(ENTRY_EFFECT.eventName, parsedData))
115+
handler[ENTRY_EFFECT.handlerName]?.(normalizeDanmu(ENTRY_EFFECT.eventName, parsedData, data.data))
116116
})
117117
}
118118

119119
// LIKE_INFO_V3_UPDATE
120120
if (handler[LIKE_INFO_V3_UPDATE.handlerName]) {
121121
instance.on(LIKE_INFO_V3_UPDATE.eventName, (data: WSMessage<any>) => {
122122
const parsedData = LIKE_INFO_V3_UPDATE.parser(data.data)
123-
handler[LIKE_INFO_V3_UPDATE.handlerName]?.(normalizeDanmu(LIKE_INFO_V3_UPDATE.eventName, parsedData))
123+
handler[LIKE_INFO_V3_UPDATE.handlerName]?.(normalizeDanmu(LIKE_INFO_V3_UPDATE.eventName, parsedData, data.data))
124124
})
125125
}
126126

127127
// ONLINE_RANK_COUNT
128128
if (handler[ONLINE_RANK_COUNT.handlerName]) {
129129
instance.on(ONLINE_RANK_COUNT.eventName, (data: WSMessage<any>) => {
130130
const parsedData = ONLINE_RANK_COUNT.parser(data.data)
131-
handler[ONLINE_RANK_COUNT.handlerName]?.(normalizeDanmu(ONLINE_RANK_COUNT.eventName, parsedData))
131+
handler[ONLINE_RANK_COUNT.handlerName]?.(normalizeDanmu(ONLINE_RANK_COUNT.eventName, parsedData, data.data))
132132
})
133133
}
134134

135135
// ROOM_CHANGE
136136
if (handler[ROOM_CHANGE.handlerName]) {
137137
instance.on(ROOM_CHANGE.eventName, (data: WSMessage<any>) => {
138138
const parsedData = ROOM_CHANGE.parser(data.data)
139-
handler[ROOM_CHANGE.handlerName]?.(normalizeDanmu(ROOM_CHANGE.eventName, parsedData))
139+
handler[ROOM_CHANGE.handlerName]?.(normalizeDanmu(ROOM_CHANGE.eventName, parsedData, data.data))
140140
})
141141
}
142142

143143
// SEND_GIFT
144144
if (handler[SEND_GIFT.handlerName]) {
145145
instance.on(SEND_GIFT.eventName, (data: WSMessage<any>) => {
146146
const parsedData = SEND_GIFT.parser(data.data)
147-
handler[SEND_GIFT.handlerName]?.(normalizeDanmu(SEND_GIFT.eventName, parsedData))
147+
handler[SEND_GIFT.handlerName]?.(normalizeDanmu(SEND_GIFT.eventName, parsedData, data.data))
148148
})
149149
}
150150

151151
// SUPER_CHAT_MESSAGE
152152
if (handler[SUPER_CHAT_MESSAGE.handlerName]) {
153153
instance.on(SUPER_CHAT_MESSAGE.eventName, (data: WSMessage<any>) => {
154154
const parsedData = SUPER_CHAT_MESSAGE.parser(data.data, roomId)
155-
handler[SUPER_CHAT_MESSAGE.handlerName]?.(normalizeDanmu(SUPER_CHAT_MESSAGE.eventName, parsedData))
155+
handler[SUPER_CHAT_MESSAGE.handlerName]?.(normalizeDanmu(SUPER_CHAT_MESSAGE.eventName, parsedData, data.data))
156156
})
157157
}
158158

159159
// WATCHED_CHANGE
160160
if (handler[WATCHED_CHANGE.handlerName]) {
161161
instance.on(WATCHED_CHANGE.eventName, (data: WSMessage<any>) => {
162162
const parsedData = WATCHED_CHANGE.parser(data.data)
163-
handler[WATCHED_CHANGE.handlerName]?.(normalizeDanmu(WATCHED_CHANGE.eventName, parsedData))
163+
handler[WATCHED_CHANGE.handlerName]?.(normalizeDanmu(WATCHED_CHANGE.eventName, parsedData, data.data))
164164
})
165165
}
166166
}

src/types/app.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,6 @@ export interface Message<T> {
5151
type: string,
5252
/** 消息内容 */
5353
body: T
54+
/** 原始消息内容 */
55+
raw: any
5456
}

src/utils/message.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class MsgQueue {
2020

2121
const msgQueue = new MsgQueue()
2222

23-
export const normalizeDanmu = <T>(msgType: string, body: T): Message<T> => {
23+
export const normalizeDanmu = <T>(msgType: string, body: T, rawBody: any): Message<T> => {
2424
const timestamp = Date.now()
2525
const randomText = Math.floor(Math.random() * 10000).toString()
2626
// @ts-ignore
@@ -30,6 +30,7 @@ export const normalizeDanmu = <T>(msgType: string, body: T): Message<T> => {
3030
timestamp,
3131
type: msgType,
3232
body,
33+
raw: rawBody,
3334
}
3435
}
3536

0 commit comments

Comments
 (0)