SignalR如何在内部工作? [英] How SignalR works internally?
本文介绍了SignalR如何在内部工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有人能让我知道SignalR是如何以高级方式在内部工作的吗?
我猜它正在使用Response.Flush
刷新数据,并且在客户端,它以一定的间隔发送Ajax请求。是否正确?
推荐答案
不,SignalR是连接上的抽象。它通过该连接为您提供了两种编程模型(集线器和持久连接)。SignalR有传输的概念,每个传输决定如何发送/接收数据以及如何连接和断开。
SignalR有几个内置传输器:
- WebSockets
- 服务器发送的事件
- 永久框架
- 长轮询
这是最高水平。如果您想了解每个传输是如何实现的,可以查看source code。
每种传输都有客户端代码: https://github.com/SignalR/SignalR/tree/master/src/Microsoft.AspNet.SignalR.Client.JS如果您特别询问长轮询传输是如何工作的:
它向异步等待信号响应的服务器发送Ajax请求。当有信号或请求超时时,它从服务器返回并发送另一个请求,过程继续。(我省略了一些有关客户端如何跟踪它看到的内容的细节,这样它就不会错过消息)
希望这回答了您的大部分问题。
这篇关于SignalR如何在内部工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文