A web-API socket that exposes the on* handler properties, as Deno's
upgradeWebSocket socket does.
onopen: ((event: unknown) => void) | null
Fires once the socket is writable.
onmessage: ((event: { data: unknown; }) => void) | null
Fires per inbound frame.
onclose: ((event: { code: number; reason: string; }) => void) | null
Fires once on close.
onerror: ((event: unknown) => void) | null
Fires on transport error.