1

已经开始使用 SignalR。想澄清一些关于 SignalR 如何实现广播的疑问,基本上服务器如何能够启动通信?

1> 在正常情况下,每当我们请求一个 .aspx 页面时,服务器都会渲染页面并将响应返回给客户端,然后事情就完成了

但是,如果 ASP.net 站点上提供 Ticker 演示,SignalR 如何能够在后台/异步中持续执行。

我用谷歌搜索了一下,发现 IRegisteredObject 是需要不断执行的对象需要向 HostingEnvironment 注册的方式之一,但为此,该类必须实现 IRegisteredObject 接口,但在代码演示的情况下,没有一个类实现IRegisteredObject 接口。

我是在这里发信息还是 SignalR 使用完全不同的技术?

4

1 回答 1

3

SignalR 使用 4 种传输方式来处理来自服务器的数据。一次只使用一个传输,但 SignalR 有 4 个来确保在各种设备/浏览器上进行服务器/客户端通信。这是传输和简短的技术描述:

  1. 长轮询,为了接收数据,它使用 ajax 请求,其响应在服务器上有可用数据之前不会发布,一旦服务器返回保留响应的数据,客户端然后创建另一个请求并等待下一批数据。为了发送数据,它创建了第二个 ajax 请求。
  2. Forever Frame,使用 iframe,服务器通过 iframe 下推 javascript 文本,然后在 iframe 中执行,然后 iframe 将执行传播到父页面,然后父页面处理数据。SignalR 使用 ajax 请求发送数据。
  3. 服务器发送事件,使用 EventSource 对象。除了 IE,几乎所有东西都支持。EventSource 对象打开了一个单向管道,服务器可以通过该管道泵送数据,从而允许客户端实时接收数据。SignalR 使用 ajax 请求发送数据。
  4. Web Sockets,使用内置的浏览器 WebSocket 对象打开一个单一的双向通道,通过该通道可以接收和发送数据。

这是每个 SignalR 传输的精髓,您可以在这里看到 David Fowler 和 Damian Edwards 创建 SignalR 的 Lite 版本的一小时演示。它本质上强调了 SignalR 如何在幕后工作。

于 2013-07-13T18:20:31.987 回答