学ASP.NET Core SignalR需掌握三个方面的内同
1.服务端的写法
2.客户端的选择
3.选择客户端和服务端的通信方式
4.客户端和服务端数据的压缩方式
1.1 服务端的写法
2.1 ASP.NET Core SignalR客户端的选择
2.1.1 .Net Client
2.1.2 java Client
2.1.3 javascript Client
2.1.4 小程序客户端
websocket要求用wss,websocket只能走433端口
3. 客户端和服务端的通信方式
可选的客户端和服务端的通信方式包括LongLooping(长轮询)、WebSocket(HTML5的WEB套接字)、sse几种.可以在WEB客户端显式指定一种或几种,也可以采取默认(推荐),若采取默认,SignalR会根据浏览器的环境自动选择合适的传输方式。
3.2 WebSocket
浏览器和客户端之间想要进行WebSocket通信的话,从一开始的握手阶段,就要从HTTP协议升级为WebSocket协议,这是服务器根据WebSocket发送的请求包决定的。
小程序因为无法直接使用websocket,所以无法使用signalR.js,你可以试着把signalR.js中的webcosket使用部分换成wx.xxSocketxxx
微信小程序要改写signalr.js,把其中的代码改为iwx.socket代码。
nginx 要配置支持ws协议。
4.1 客户端和服务端数据的传输协议方式
客户端和服务端数据的传输数据时,需明确指定数据的格式,以便客户端和服务端能正确解析数据包的结构。有文本格式和二进制格式。
4.1.1 json
4.1.2 messagePack
一、SignalR 实现原理
SignalR 的实现机制与 .NET WCF 或 Remoting 是相似的,都是使用远程代理来实现。在具体使用上,有两种不同目的的接口:
(一)PersistentConnection 。
PersistentConnection 是实现了长时间的 JavaScript 轮询(类似于 Comet)
(二)Hubs。
Hub 是用来解决实时信息交换问题,它是利用 Javascript 动态载入执行方法实现的。SignalR 将整个连接,信息交换过程封装得非常漂亮,客户端与服务器端全部使用 JSON 来交换数据。
二、实现流程
(一) PersistentConnection 接口的使用整个流程
(二)Hubs 接口的使用整个流程
1,在服务器端定义对应的 hub class;
2,在客户端定义 hub class 所对应的 proxy 类;
3,在客户端与服务器端建立连接(connection);
4,然后客户端就可以调用 proxy 对象的方法来调用服务器端的方法,也就是发送 request 给服务器端;
5,服务器端接收到 request 之后,可以针对某个/组客户端或所有客户端(广播)发送消息。
三、SignalR的客户端 SignalR支持三种客户端:
(一)JavaScript Client。
一个简单的SignalR例子中的SignalRDemo(点赞页面)就是JavaScript Client(HTML中的JavaScript脚本)。 (二).NET Client。
.NET Client包括但不限于Windows Console,Windows Form,WPF,Windows Phone等。
(三) Java client
引用包:
<script src="~/lib/signalr/signalr.js"></script>
https://docs.microsoft.com/en-us/aspnet/core/signalr/javascript-client?view=aspnetcore-3.0
四、资源收集
1.Real Time Translation Chat using SignalR https://github.com/vavjeeva/RealTimeTranslationChat.
blog
1.使用SignalR实现服务端消息推送,实时显示股票价格,对程序代码有详细解释
https://www.cnblogs.com/isrocking/p/Server-Broadcast-with-SignalR2.html
1.2 Web API++SignalR:ASP.NET Core: Building a Real-Time Online Poll System with SignalR 2, jQuery, EF Core, Core MVC and Web API 2
https://www.codeproject.com/Articles/1115941/ASP-NET-Core-Building-a-Real-Time-Online-Poll-Syst
1.3 Real-Time Poll Vote Results Using SignalR 2, MVC, Web API 2, jQuery And HighCharts
https://www.codeproject.com/Articles/1136917/Real-Time-Poll-Vote-Results-Using-SignalR-MVC-Web
1.4 Winfrom+SignalR:利用SignalR来同步更新Winfrom
2. .net core 3.x
doc:https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-3.0
https://github.com/aspnet/AspNetCore/tree/master/src/SignalR/samples