我总是知道SignalR
与基于浏览器的应用程序实时完美匹配。
一般来说,将服务器端处理消息推送到客户端,这是一个" listen"网页。
对于不是Web应用程序的客户端,可以对桌面应用程序进行相同的实时推送吗?
答案 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
}
}