radu-matei / websocket-manager

Real-Time library for ASP .NET Core
https://radu-matei.com/blog/real-time-aspnet-core/
MIT License
452 stars 183 forks source link

Fix for exceptions thrown on an unexpected client disconnection. #83

Open rh101 opened 4 years ago

rh101 commented 4 years ago

If a WebSocket client disconnects without initiating the close handshake, an exception is thrown since the socket will be in an invalid state, so CloseOutputAsync() shouldn't be called, since there won't be anything to receive this message.

Also, CloseAsync() expects a full close handshake, whereas a CloseOutputAsync() will simply initiate the close and not wait for any response from a client, so in this case CloseOutputAsync is the one to use.

The API has changed slightly for the ConnectionManager, since the socket must still be removed on a client disconnection that did not involve the close handshake.