.NET Core 2.0中WebSocket使用及抽象类实现方式咨询
关于.NET Core中WebSocket抽象类的实现问题
嘿,这个问题问得很到位!我来给你梳理清楚:
你完全不需要自己去继承并实现那个抽象的WebSocket类,.NET Core框架已经为我们提供了现成的完整实现,分两种场景来说:
1. 客户端场景(比如桌面/控制台程序连接WebSocket服务器)
直接用ClientWebSocket就好!它是WebSocket抽象类的官方具体实现,开箱即用。举个简单的使用示例:
using (var clientWebSocket = new ClientWebSocket()) { await clientWebSocket.ConnectAsync(new Uri("wss://your-websocket-server-url"), CancellationToken.None); // 发送数据 var sendBuffer = Encoding.UTF8.GetBytes("Hello WebSocket!"); await clientWebSocket.SendAsync(new ArraySegment<byte>(sendBuffer), WebSocketMessageType.Text, true, CancellationToken.None); // 接收数据 var receiveBuffer = new byte[1024]; var result = await clientWebSocket.ReceiveAsync(new ArraySegment<byte>(receiveBuffer), CancellationToken.None); var receivedMessage = Encoding.UTF8.GetString(receiveBuffer, 0, result.Count); }
2. 服务器端场景
如果是ASP.NET Core服务器
虽然你说搜到的内容都是针对ASP.NET Core的,但这确实是官方推荐的服务器端WebSocket实现方式。你不需要自己实现WebSocket,框架会在你调用HttpContext.WebSockets.AcceptWebSocketAsync()时,返回一个已经实现好的WebSocket实例,直接用来和客户端通信就行。
如果是非ASP.NET Core的服务器(比如普通控制台服务器)
也不用自己继承WebSocket。你可以通过HttpListener来处理WebSocket握手请求,握手成功后,框架会帮你创建WebSocket的实现实例,直接使用即可。不过这种场景相对小众,大部分情况下还是推荐用ASP.NET Core的WebSocket中间件,更省心。
总结
抽象的WebSocket类只是定义了统一的操作接口,框架已经为不同场景提供了对应的具体实现:
- 客户端用
ClientWebSocket - 服务器端无论是ASP.NET Core还是其他方式,都能获取到框架创建好的
WebSocket实例,完全不需要自己去实现抽象类的各个方法。
内容的提问来源于stack exchange,提问作者user5380008
相关产品推荐
相关产品推荐

