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

长春比较有名的做网站建设工具大全

长春比较有名的做网站建设,工具大全,制作一个网站数据库怎么做的,安卓电商app开发一、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/151596.html

相关文章:

  • 广告公司网站源码最近爆发什么病毒感染
  • 东莞外贸网站建设开发苏州百度推广开户
  • 一级a做爰网站中国百度关键词热度排名
  • 集团培训网站建设关键词搜索技巧
  • 老的网站为什么要改版新网站国外b站浏览器
  • 福州网站搭建白帽优化关键词排名seo
  • 廊坊网站建设公司费用优化关键词的方法
  • 秦皇岛做网站多少钱键词优化排名
  • 哈尔滨做平台网站平台公司哪家好金华网站建设
  • 视频分享网站怎么做的写软文一篇多少钱合适
  • 多语种外贸网站管理系统宁波seo营销
  • 商城源码哪个品牌好百度排名优化咨询电话
  • wordpress手赚推广网站优化排名哪家好
  • 自己做网站模版百度付费推广
  • 销售一个产品的网站怎么做百度首页的ip地址
  • 国家卫生健康委健康中心百度搜索推广优化师工作内容
  • 58同城做网站的电话小红书推广平台
  • 做网站图片要求高吗创建网站免费
  • 网站建设注意事项 南京怎么用网络推广业务
  • 注册公司登陆哪个网站易推广
  • vs做的小型网站例青岛网站快速排名提升
  • 八方资源网的免费b2b网站营销型网站名词解释
  • 凡科做网站要钱泉州seo按天收费
  • 网站防采集专业seo整站优化
  • 电子商务网站建设与规划视频广东深圳疫情最新消息今天
  • 开封网站建设zducm中国软文网官网
  • 怎么免费网做百度收录的网站吗百度站长
  • 谷歌搜索引擎免费入口seocms
  • 哪些网站开发网站推广论坛
  • 做酒店的网站淮南网站seo