其他分享
首页 > 其他分享> > SingalR随笔

SingalR随笔

作者:互联网

SingalR:
它是一个.net core/.net framework的开源实时框架.SignalR可使用WebSocket、Server Sent Events和Long Polling(长轮询)作为底层传输方式。

Long Polling:
是客户端发送请求到服务器,如果有数据就返回至客户端,如果没有新数据要发送到客户端的话,那么服务器会继续保持连接,直到有新的数据产生,服务器才把新的数据返回给客户端。但是,如果请求发出后一段时间内没有响应的话,那么请求则会超时,这时客户端会再次发送请求。

Server Sent Events(SSE):
使用SSE,web服务器可以在任何时间把数据发送到浏览器,可以称之为推送。而浏览器则会监听进来的信息,这些信息则会像流数据一样,而这个连接也会一直保持开放,直到服务器主动关闭。 浏览器会使用一个叫做EventSourse的对象用来处理传过来的信息。它使用的是HTTP协议,而且是自动重新连接。


WebSocket:
是不同于HTTP的另一个TCP协议,它使得浏览器与服务器之间的交互式通信变得可能。websocket生命周期如下:

使用现代浏览器时,SignalR大部分情况下都会使用WebSocket,这也是最有效的传输方式。

SignalR是基于这三种技术构建,抽象于他们之上,他让你更好的关注业务问题而不是底层传输问题。

SignalR这个框架分为服务器端和客户端,服务器端支持ASP.NET CORE 和ASP.NET ;而客户端除了支持浏览器中的javascript之外,也支持其他类型的客户端,如控制台、WPF等等。

SignalR这三种底层机制是通过“回落机制”使用的。 WebSocket仅支持比较现代的浏览器,web服务器也不能太老;而Server Sent Events情况相对好点,但是也存在同样的问题。因此SignalR了采用回落机制,SignalR有能力去协商支持的传输类型。 “回落机制”的是什么意思?看如下图:

首先WebSocket是最好的最有效的方式,但是如果浏览器或web服务器不支持他的话,就需要降级使用,降级到SSE,而如果浏览器或web服务器同样不支持SSE,那么就需要使用Long Polling了,Long Polling一般都支持。

以上就是全部内容了,本人根据杨旭老师的视频写了一个小demo,地址:https://gitee.com/KolenYx/signal-rdemo,有需要的自取。 (注:其中的图片都是从杨旭老师视频中截取,因为本人较懒。)

 

标签:web,浏览器,SingalR,SignalR,WebSocket,服务器,随笔,客户端
来源: https://www.cnblogs.com/kolenyx/p/14764721.html