text: Title: Switch WebSockets legacy implementation to Sans-I/O
  Body: Given https://github.com/aaugustin/websockets/issues/975 and https://github.com/aaugustin/websockets/issues/1310#issuecomment-1479780072 we should try to follow @aaugustin's recommendation.
  
  We can discuss if we should deprecate the current `WebSocketProtocol`, or if we should replace it, and that's it.
  
  <!-- POLAR PLEDGE BADGE START -->
  > [!IMPORTANT]
  > - We're using [Polar.sh](https://polar.sh/encode) so you can upvote and help fund this issue.
  > - We receive the funding once the issue is completed & confirmed by you.
  > - Thank you in advance for helping prioritize & fund our backlog.
  
  <a href="https://polar.sh/encode/uvicorn/issues/1908">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://polar.sh/api/github/encode/uvicorn/issues/1908/pledge.svg?darkmode=1">
    <img alt="Fund with Polar" src="https://polar.sh/api/github/encode/uvicorn/issues/1908/pledge.svg">
  </picture>
  </a>
  <!-- POLAR PLEDGE BADGE END -->
  