Files
BRETT/server/routes/_ws.ts
T
2026-10-03 20:07:49 +02:00

24 lines
843 B
TypeScript

export default defineWebSocketHandler({
async open(peer) {
try {
registerGlobalPeer(peer)
const headers = peer.request?.headers as { cookie?: string, get?: (name: string) => string | null } | undefined
const cookie = headers?.get?.('cookie') ?? headers?.cookie
const userId = await getUserIdFromCookieHeader(cookie)
if (userId !== null) {
;(peer.context as { userId?: number }).userId = userId
registerPeer(userId, peer)
}
} catch {
// Peer kann während des async-Lookups schon weg sein — nicht als Crash propagieren
}
},
close(peer) {
unregisterGlobalPeer(peer)
unregisterPeer((peer.context as { userId?: number }).userId, peer)
},
error(peer, error) {
console.warn('[ws] Fehler bei Peer:', error instanceof Error ? error.message : error)
},
})