fix(server): log the close code and reason when a /ws connection ends

Effect's RPC server swallows the socket's close error, so a client close
left only the HTTP 101 in the log. The upgraded socket now records the
close code and reason before that, and each connection ends with one
`WebSocket closed` line: how it ended, code, reason, duration, last
inbound frame age, session, surface and address.

Adapted from the WsConnectionLog in #24285 by only21mil.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
17cec6d6f0Julius Marminge committed on 10/24/2026, 10:05:40 AMparent132f0b6
4 files changedLine totals unavailable