信号器具有基于桌面的应用程序实时

时间:2014-02-12 11:57:52

标签: c# signalr desktop-application

我总是知道SignalR与基于浏览器的应用程序实时完美匹配。

一般来说,将服务器端处理消息推送到客户端,这是一个" listen"网页。

对于不是Web应用程序的客户端,可以对桌面应用程序进行相同的实时推送吗?

2 个答案:

答案 0 :(得分:3)

简而言之,是的。 github上的示例向您展示了如何,例如console client sample,wiki中的文档向您展示了如何build a .NET client。引用该文档(警告,依赖于版本,它现在可以使用,但将来可能会有所不同):

var hubConnection = new HubConnection("http://www.contoso.com/");
IHubProxy stockTickerHubProxy = hubConnection.CreateHubProxy("StockTickerHub");
stockTickerHubProxy.On<Stock>("UpdateStockPrice", stock => Console.WriteLine("Stock update for {0} new price {1}", stock.Symbol, stock.Price));

stockTickerHub.On("notify", () =>
    // Context is a reference to SynchronizationContext.Current
    Context.Post(delegate
    {
        textBox.Text += "Notified!\n";
    }, null)
);    

await hubConnection.Start();
// or do the following for a synchronous method:
// connection.Start().Wait();

有关上述代码,请参阅ASP.NET: ASP.NET SignalR Hubs API Guide

答案 1 :(得分:1)

我已经在.NET客户端上做了一个包装器,这使得在本地客户端上实现监听器变得非常容易

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki/.NET-Client

设置完成后,只需添加一个像

这样的监听器
public class MyViewModel : IHandle<MyEvent>
{
   public MyViewModel(IEventAggregator eventAggregator) 
   {
      eventAggregator.Subscribe(this);
   }
   public void Handle(MyEvent message)
   {
      //Act on MyEvent
   }
}