You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:06:19