当前位置: 首页 > wzjs >正文

长春比较有名的做网站建设销售渠道

长春比较有名的做网站建设,销售渠道,企业网站建设趋势,南京建设委网站首页一、WebSocket 基础概念 1. 什么是 WebSocket? 双向通信协议:与 HTTP 的单向请求不同,WebSocket 支持服务端和客户端实时双向通信。 低延迟:适用于聊天室、实时数据推送、在线游戏等场景。 协议标识:ws://&#xff…

一、WebSocket 基础概念

1. 什么是 WebSocket?

  • 双向通信协议:与 HTTP 的单向请求不同,WebSocket 支持服务端和客户端实时双向通信

  • 低延迟:适用于聊天室、实时数据推送、在线游戏等场景。

  • 协议标识ws://(非加密)或 wss://(加密)。


二、环境准备

1. 开发环境

  • .NET 版本:.NET Framework 4.5+ 或 .NET Core 3.1+

  • IDE:Visual Studio 2019+ 或 VS Code

  • 命名空间System.Net.WebSockets


三、服务端实现(ASP.NET Core)

1. 创建 WebSocket 服务端

using System.Net.WebSockets;
using System.Text;public class WebSocketHandler
{public async Task HandleWebSocket(HttpContext context){// 1. 接受 WebSocket 连接请求WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();// 2. 接收客户端消息var buffer = new byte[1024];WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);while (!result.CloseStatus.HasValue){// 3. 解析消息内容string message = Encoding.UTF8.GetString(buffer, 0, result.Count);Console.WriteLine($"收到消息: {message}");// 4. 回复客户端(示例:原样返回消息)await webSocket.SendAsync(new ArraySegment<byte>(buffer, 0, result.Count),result.MessageType,result.EndOfMessage,CancellationToken.None);// 继续接收下一条消息result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);}// 5. 关闭连接await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);}
}
 

2. 配置 ASP.NET Core 中间件

// Program.cs
app.UseWebSockets(); // 启用 WebSocket 中间件app.Map("/ws", async context =>
{if (context.WebSockets.IsWebSocketRequest){var handler = new WebSocketHandler();await handler.HandleWebSocket(context);}else{context.Response.StatusCode = 400;await context.Response.WriteAsync("请使用 WebSocket 协议访问");}
});
 

四、客户端实现(控制台应用)

1. 客户端连接代码

using System.Net.WebSockets;
using System.Text;public class WebSocketClient
{public async Task ConnectAsync(string url){ClientWebSocket webSocket = new ClientWebSocket();// 1. 连接到服务端await webSocket.ConnectAsync(new Uri(url), CancellationToken.None);Console.WriteLine("已连接到服务端");// 2. 发送消息string message = "Hello, WebSocket!";byte[] buffer = Encoding.UTF8.GetBytes(message);await webSocket.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None);// 3. 接收服务端响应buffer = new byte[1024];WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);string response = Encoding.UTF8.GetString(buffer, 0, result.Count);Console.WriteLine($"收到回复: {response}");// 4. 关闭连接await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "关闭连接", CancellationToken.None);}
}
 

2. 调用客户端

// Main 方法
static async Task Main(string[] args)
{WebSocketClient client = new WebSocketClient();await client.ConnectAsync("ws://localhost:5000/ws");
}
 

五、运行测试步骤

  1. 启动服务端

    dotnet run
     
  2. 运行客户端
    客户端控制台输出:

    已连接到服务端
    收到回复: Hello, WebSocket!
     

六、核心 API 说明

方法/属性说明
AcceptWebSocketAsync()服务端接受 WebSocket 连接请求
SendAsync()发送消息(支持文本和二进制数据)
ReceiveAsync()异步接收消息
CloseAsync()正常关闭连接
WebSocketMessageType.Text指定消息类型为文本

七、注意事项

  1. 跨域问题
    在 ASP.NET Core 中配置 CORS:

    services.AddCors(options => options.AddPolicy("AllowAll", builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()));
     
  2. 心跳检测
    添加心跳机制防止连接超时:

    webSocket.Options.KeepAliveInterval = TimeSpan.FromSeconds(30);
     
  3. 异常处理
    使用 try-catch 捕获 WebSocketException

    try {// WebSocket 操作代码
    } catch (WebSocketException ex) {Console.WriteLine($"连接异常: {ex.Message}");
    }
     
  4. 性能优化

    • 使用 ArrayPool<byte> 重用缓冲区

    • 多线程处理高并发连接

http://www.dtcms.com/wzjs/54523.html

相关文章:

  • 合肥专业商业网站杭州百度百家号seo优化排名
  • 做佩戴护身符的厂家网站广东做seo的公司
  • 东莞住房和建设局网站超级外链在线发布
  • 备案需要网站吗昆明seo培训
  • 那个网站做外贸seo优化公司
  • 培训网站欣赏关键词优化的软件
  • 网站视频怎么做的百度搜索引擎下载
  • 江苏省电力建设质量监督中心站网站沈阳seo收费
  • 电子商务网站推广的方式有哪些b2b平台
  • 电商平台建设做网站优化软件
  • 新网站上线 怎么做seo郑州官网网站推广优化公司
  • 专业建站服务公司seo搜索排名优化是什么意思
  • 公司网站企业文化怎么做如何进行电子商务网站推广
  • 中小学生在线做试卷的网站6一个好的产品怎么推广
  • 徐州木塑模板网站优化网
  • 网站策划书内容不包括什么微信客户管理
  • 江苏建设教育深圳宝安seo外包
  • 云服务器 可以做网站吗google官方下载安装
  • 专门做cg视频网站营销策划公司名字
  • python 网站开发怎么部署如何做营销推广
  • 做羞羞的事情的网站重庆优化seo
  • 移动网站 案例网络教学平台
  • 个人网站一年多少钱郑州网络推广哪个好
  • 平面设计广告图快速排名seo软件
  • 设计素材网站哪个最好用宁波网站推广优化外包
  • 做头像网站有哪些百度关键词搜索怎么做
  • python做网站验证码市场营销咨询
  • 做视频网站要申请什么许可证seo技术培训机构
  • 安徽城乡建设委员会的网站谷歌推广app
  • 网站地图提交互联网营销行业前景