任何人都可以让我知道SignalR如何以高水平的方式在内部工作?
我猜它正在使用刷新数据,Response.Flush并且在客户端它以一定的间隔发送Ajax请求.这是对的吗?
dav*_*owl 237
不,SignalR是连接的抽象.它为您提供了两种编程模型(集线器和持久连接).SignalR具有传输概念,每个传输决定数据的发送/接收方式以及连接和断开连接的方式.
SignalR有一些内置传输:
SignalR尝试选择服务器和客户端支持的"最佳"连接(您也可以强制它使用特定的传输).
这是高水平.如果要查看每个传输的实现方式,可以查看源代码.
还有每个传输的客户端代码:https: //github.com/SignalR/SignalR/tree/master/src/Microsoft.AspNet.SignalR.Client.JS
如果您询问长轮询运输如何运作:
它向服务器发送ajax请求,该服务器异步等待信号响应.当有信号或请求超时时,它从服务器返回并发送另一个请求并继续该过程.(我留下了一些关于客户如何跟踪它所看到的内容以及它不会错过消息的细节)
希望这能回答你的大部分问题.
@davidfowl 已经回答了主要部分。但是,要提供有关传输行为差异的更多详细信息,特别是 WebSocket 和其他传输之间的差异;以下是一些要点。
| 归档时间: |
|
| 查看次数: |
35557 次 |
| 最近记录: |