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) }, })