SignalR如何广播消息?

时间:2013-07-13 15:19:28

标签: signalr broadcasting

已开始使用SignalR。想澄清一下有关SignalR如何实现广播的几个问题,基本上服务器是如何启动通信的?

1>在正常情况下,每当我们请求说出.aspx页面时,服务器都会呈现页面并将响应返回给客户端并且事情已经完成

但是如果在ASP.net网站上提供Ticker演示,SignalR如何能够在Background / Async中继续执行。

我googled一点点发现IRegisteredObject是需要连续执行的对象需要向HostingEnvironment注册的方式之一,但是为了这个,类必须实现IRegisteredObject接口但是如果是ticker demo则没有class实现了IRegisteredObject接口。

我在这里讨论什么或SignalR使用完全不同的技术?

1 个答案:

答案 0 :(得分:3)

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

  1. 长轮询,为了接收数据,它使用ajax请求,在服务器上有可用数据之前不会释放响应,一旦服务器返回保持到响应的数据,客户端就会创建另一个请求并等待下一批数据的。要发送数据,它会创建第二个ajax请求。
  2. Forever Frame,使用iframe通过服务器按下javascript文本然后在iframe中执行iframe,然后iframe将执行传播到父页面然后处理数据。要发送数据,SignalR使用ajax请求。
  3. Server Sent Events,使用EventSource对象。几乎所有东西都支持IE。 EventSource对象打开一个单向管道,服务器可以通过该管道泵送数据,允许客户端实时接收数据。要发送数据,SignalR使用ajax请求。
  4. Web Sockets,使用内置的浏览器WebSocket对象,该对象打开一个双向通道,通过该通道可以接收和发送数据。
  5. 这是SignalR每个传输的精髓,你可以看到一个小时的演示,其中David Fowler和Damian Edwards创建一个Lite版本的SignalR here。它基本上突出了SignalR如何在幕后工作。