Asp.Net Core 使用WebSocket

Asp.Net Core 使用WebSocket_第1张图片
1.gif
Asp.Net Core 使用WebSocket_第2张图片
2.gif

添加WebSocket中间件

app.UseWebSockets();

设置WebSocket连接

 public async Task Connect(HttpContext context, Func n)
        {
            try
            {              
                //执行接收  
                WebSocket socket = await context.WebSockets.AcceptWebSocketAsync();
                this.socket = socket;
                //执行监听  
                await WebSocketLoop();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

设置WebSocket请求处理

 async Task WebSocketLoop()
        {           
            var buffer = new byte[1024];
            var seg = new ArraySegment(buffer);
            while (this.socket.State == WebSocketState.Open)
            {
                var incoming = await this.socket.ReceiveAsync(seg, CancellationToken.None);
                var Receive = System.Text.UTF8Encoding.Default.GetString(seg.Array);
                byte[] backInfo = System.Text.UTF8Encoding.Default.GetBytes($"格式有误,请检查{DateTime.Now}");
                if (Receive.Contains("&"))
                {
                    var ReceiveMessige= System.Text.UTF8Encoding.Default.GetString(seg.Array).Split('&');
                    //解析Json字符串为JObject
                    var  result = JsonHelper.DeserializeJsonToObject(ReceiveMessige[0],out WebSocketBaseModel model);
                    if (result)
                    {
                        Thread.Sleep(model.SleepTime);                       
                        backInfo = System.Text.UTF8Encoding.Default.GetBytes("服务端相应内容:OK");                                      
                    }                  
                }               
                var ErrorOutgoing = new ArraySegment(backInfo, 0, backInfo.Length);
                await this.socket.SendAsync(ErrorOutgoing, WebSocketMessageType.Text, true, CancellationToken.None);
                
               
            }
        }

设置WebSocket客户端


你可能感兴趣的:(Asp.Net Core 使用WebSocket)