SignalR如何在内部工作? [英] How SignalR works internally?

查看:15
本文介绍了SignalR如何在内部工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人能让我知道SignalR是如何以高级方式在内部工作的吗?

我猜它正在使用Response.Flush刷新数据,并且在客户端,它以一定的间隔发送Ajax请求。是否正确?

推荐答案

不,SignalR是连接上的抽象。它通过该连接为您提供了两种编程模型(集线器和持久连接)。SignalR有传输的概念,每个传输决定如何发送/接收数据以及如何连接和断开。

SignalR有几个内置传输器:

  1. WebSockets
  2. 服务器发送的事件
  3. 永久框架
  4. 长轮询
SignalR尝试选择服务器和客户端支持的"最佳"连接(您也可以强制它使用特定的传输)。

这是最高水平。如果您想了解每个传输是如何实现的,可以查看source code

每种传输都有客户端代码: https://github.com/SignalR/SignalR/tree/master/src/Microsoft.AspNet.SignalR.Client.JS

如果您特别询问长轮询传输是如何工作的:

它向异步等待信号响应的服务器发送Ajax请求。当有信号或请求超时时,它从服务器返回并发送另一个请求,过程继续。(我省略了一些有关客户端如何跟踪它看到的内容的细节,这样它就不会错过消息)

希望这回答了您的大部分问题。

这篇关于SignalR如何在内部工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆