chore: remote forwarding integration

This commit is contained in:
2026-07-17 18:16:11 +08:00
parent d12c74649a
commit ec9f854136
14 changed files with 1660 additions and 77 deletions
+5 -1
View File
@@ -11,6 +11,8 @@ export interface ChatServerEvents {
recall: (from: DeviceInfo, messageId: string) => void
typing: (from: DeviceInfo) => void
read: (from: DeviceInfo, upToMessageId: string) => void
// 任意 ws 帧 (含 terminal/forward/usb 等), 让上层路由分发
frame: (from: DeviceInfo, frame: WsFrame) => void
}
export class ChatServer extends EventEmitter {
@@ -52,6 +54,8 @@ export class ChatServer extends EventEmitter {
} catch {
return
}
// 通用: 任何帧都抛 'frame', 上层 (ipc.bindNetworkContext) 自行路由
if (peer) this.emit('frame', peer, frame)
switch (frame.type) {
case 'hello':
if (frame.from && frame.from.deviceId) {
@@ -79,12 +83,12 @@ export class ChatServer extends EventEmitter {
if (peer) this.emit('recall', peer, frame.messageId)
break
case 'read':
// 已读回执: 接收方已看到 upTo (含), 把 ≤ upTo 的发送方消息视为已读
if (peer) this.emit('read', peer, frame.upTo)
break
case 'typing':
if (peer) this.emit('typing', peer)
break
// terminal / forward / usb 由 'frame' 事件统一交给上层处理
}
})