forked from BRETT/BRETT
24 lines
843 B
TypeScript
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)
|
|
},
|
|
})
|