一、SignalR是什么?
SignalR是一种开放源代码库,可简化将实时Web功能添加到应用程序的功能。实时Web功能使服务器端代码可以立即将内容推送到客户端。
二、SignalR的通信方式
1、WebSockets
WebSockets是一种在单个TCP连接上进行全双工通信的协议,使得服务器和浏览器的通信更加简单,服务端可以主动发消息。
2、Server-Sent Events
Server-Sent Events是一种用于实现服务器向客户端实时推送数据的Web技术。它基于Http协议,允许服务器将数据以事件流的形式发送给客户端。客户端通过建立持久的Http连接,并监听事件流,可以实现实时接收服务器推送的数据。
3、Long Polling
一般是由客户端向服务端发出一个设置较长网络超时时间的Http请求,并在Http连接超时前,不主动断开连接;待客户端超时或有数据返回后,再次建立一个同样的Http请求,重复以上请求。
这三种方式比较:
1、WebSockets
它提供双向、全双工的通信信道,客户端和服务器可以实时、连续地传输数据。它基于TCP协议,建立持久的连接,但由于建立了持久的连接,可能会消耗更多的服务器资源,但它可以实现低延迟的数据传输。它适用于需要实时、双向通信的应用程序,例如实时聊天、通知、游戏等。
2、Server-Sent Events
单向通信,服务器可以主动向客户端发送数据,但是客户端不能向服务器发送数据。它基于Http协议,使用Http连接传输数据,每个请求/响应周期可能只发送一个事件。它适用于服务器向客户端推送数据,而客户端不需要实时响应的场景,如新闻更新、时间表变更等等。
3、Long Polling
客户端发送请求到服务器,服务器保持连接开放,直到有数据可以发送。数据发送后,连接关闭,客户端再次发送请求,它适用于服务器向客户端推送数据,而客户端不需要实时响应的场景,如消息队列、任务调度等。
总结:
WebSockets适用于需要实时、双向通信的场景;Sever-Sent Events和Long Polling适用于服务器向客户端推送数据,而客户端不需要实时响应的场景。
三、哪些场景适用于SignalR?
1、需要实时通知的应用、游戏、实时聊天、电子邮件等等;
2、仪表板和监视应用:公司仪表板、即时销售更新等等;
3、协作应用:如白板软件和团队会议软件等等;
4、实时聊天室;
5、实时地图和定位服务;