websocket 推送一段时间浏览器卡_ASP.NET Core基于WebSocket实现消息推送实战演练

本文介绍了使用WebSocket在ASP.NET Core中实现服务端消息推送,以替代Ajax轮询,减少资源浪费并提升实时性。详细讲解了WebSocket协议、ASP.NET Core中的WebSocket实现步骤,包括配置中间件、接收和发送消息。文章最后提到,在大多数实时通讯场景下,推荐使用SignalR,它提供了更高级别的抽象和传输回退机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

186ffdefeffbeebc7bcd9c9563870bc3.png

一、课程介绍

很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。

HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

今天我们要通过使用ASP.Net Core WebSocket技术来实现服务端向客户端实时推送消息(Real-Push-Message)。

一句话总结今天我们实现的目标?

如何在ASP.NET Core中使用WebSocket技术来实现服务端向指定的客户端实时推送消息。

废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。

二、WebSocket介绍

WebSocket是HTML5中的协议,支持持久连接;而Http协议不支持持久连接。

WebSocket是HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

56db26f5615c5230ce136a07835cbaf2.png

主流浏览器对 HTML5 WebSocket 的支持情况  

三、ASP.NET Core基于WebSocket实现消息推送实战演练

ASP.NET Core 中的 WebSocket 支持 | Microsoft Docs 
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/websockets?view=aspnetcore-3.1

使用步骤:

1、配置中间件

a995f8b243f260fa6df6ffdc5091734b.png

2、接受 WebSocket 请求

1a3c1dafa20b050680d886f40e850a18.png

3、ASP.NET Core中WebSocket接收消息

配置在请求生命周期(例如在UseRouting和UseEndpoints中间),检查它是否是 WebSocket 请求并接受 WebSocket 请求。

AcceptWebSocketAsync 方法将 TCP 连接升级到 WebSocket 连接,并提供 WebSocket 对象。使用 WebSocket 对象发送和接收消息。

WebSocket 请求可以来自任何 URL,但此示例代码只接受 /messagePushHub路径的请求。

4、ASP.NET Core中WebSocket发送消息

ac2163654928b8de1a70e2f1656173ac.png

39343d8379f3395b7ca2d29910f0d138.png

e6c10991a60cf1332d95b36a413f2460.png

9f1def8928a3612ddfdfcf43e568e833.png

四、总结

在ASP.NET Core中对于大多数应用程序实现实时通讯的花,现在我们建议使用 SignalR,而不是原始 WebSocket。并且在大多数情况下,与使用原始 WebSocket 相比,SignalR 没有显著的性能缺点。

ASP.NET Core SignalR 是一个库,可用于简化向应用添加实时 Web 功能,它会优先尽可能地使用 WebSocket技术。SignalR 可为 WebSocket 不可用的环境提供传输回退。它还可提供简单的远程过程调用应用模型。

如果大家感兴趣, 可以学习一下阿笨的《ASP.NET Core基于SignalR实现消息推送实战演练》课程。

3f16026cb5167723a486161f3e1c8ded.png

9fa43657ffeb9f82b772a370082730a9.png

腾讯课堂

eaa2471181c5f656fc6366b4e6b62f17.png

网易云课堂

11d4adf0f31fac2501eb50b66c4afad6.png

不信的话,扫一扫

186d1e6bb0750b37061c6b99fedef414.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值