I'm looking for an open source, cross-platform, actively maintained .NET library which provides websocket functionality for both clients and servers, in such a way that most of the code (after connection is established) can use the same abstraction regardless of which side of the connection it is on. Ideally, it would be a platform-independent implementation of System.Net.WebSockets, but I don't really care if it defines its own types, so long as there's some single abstract WebSocket class that can be shared by client and server code.
Things that I've looked at and that did not qualify (but correct me if I'm wrong):
- System.Net.WebSockets (client only, Win8+ only)
- WebSocket4Net (client only)
- WebSocket Portable (client only)
- Fleck (server only)
- WebSocketListener (server only)
- SuperWebSocket (server only)
- Owin.WebSocket (server only)
- PowerWebSockets (proprietary)
- XSockets (proprietary)
- Alchemy Websockets (last release in 2012, many active bugs in the tracker with no answers)
The only one that I could find that seems to be matching the requirements is websocket-sharp. However, what worries me there is the sheer number of opened issues in the tracker along the lines of clients unable to connect, invalid data frames etc - it sounds like it's not very mature yet.
Are there any other candidates that match my requirements that I have missed? Or am I wrong about any of the libraries listed above being client/server only?
System.Net.WebSockets.WebSocket, then that'll work for me.