• .Net6使用WebSocket与前端进行通信


    1. 创建类WebSocketTest:

    1. using System.Net.WebSockets;
    2. using System.Text;
    3. namespace WebSocket.Demo
    4. {
    5. public class WebSocketTest
    6. {
    7. //当前请求实例
    8. System.Net.WebSockets.WebSocket socket =null;
    9. public async Task DoWork(HttpContext ctx)
    10. {
    11. socket = await ctx.WebSockets.AcceptWebSocketAsync();
    12. //执行监听
    13. await EchoLoop();
    14. }
    15. public async Task EchoLoop()
    16. {
    17. //创建缓存区
    18. var buffer = new byte[1024];
    19. var arraySeg = new ArraySegment<byte>(buffer);
    20. while (this.socket.State == WebSocketState.Open)
    21. {
    22. var incoming = await this.socket.ReceiveAsync(arraySeg, CancellationToken.None);
    23. //判断类型读取
    24. if (incoming.MessageType == WebSocketMessageType.Text)
    25. {
    26. //incoming.Count 代表,请求内容字节数量
    27. string userMessage = Encoding.UTF8.GetString(arraySeg.Array, 0, incoming.Count);
    28. //接收客户端的字符串
    29. userMessage = "客户端信息: " + userMessage + " 。时间: " +
    30. DateTime.Now.ToLongTimeString();
    31. ArraySegment<byte> segResult = new ArraySegment<byte>(Encoding.UTF8.GetBytes(userMessage));
    32. await socket.SendAsync(segResult, WebSocketMessageType.Text, true, CancellationToken.None);
    33. }
    34. else
    35. {
    36. }
    37. byte[] backInfo = System.Text.UTF8Encoding.Default.GetBytes("服务端相应内容结束");
    38. var outgoing = new ArraySegment<byte>(backInfo, 0, backInfo.Length);
    39. await this.socket.SendAsync(outgoing, WebSocketMessageType.Text, true, CancellationToken.None);
    40. }
    41. }
    42. }
    43. }

    2. 在program.cs中进行绑定

    1. app.UseWebSockets();
    2. app.Map("/websocket/test", con =>
    3. {
    4. con.UseWebSockets();
    5. con.Use(async (ctx, next) =>
    6. {
    7. //创建监听websocket
    8. WebSocketTest ws = new WebSocketTest();
    9. await ws.DoWork(ctx);
    10. await next.Invoke();
    11. });
    12. });

    3. 使用websocket在线工具模拟请求:

  • 相关阅读:
    RabbitMQ相关概念
    中间件(三)- Kafka(二)
    【FPGA】计数器 —— 时序逻辑
    2022-09-17青少年软件编程(C语言)等级考试试卷(七级)解析
    Exam diagnosis Privacy Policy
    《Django 3 Web应用开发从零开始学(视频教学版)》简介
    课时4作业2
    RE4B 13章读书笔记
    2-2Linux下文件操作常用命令
    【万字解析、学习参考资料】MySQL数据库常见面试题
  • 原文地址:https://blog.csdn.net/beautiful77moon/article/details/134564164