我有一个执行某些操作的 Web 服务。当事件发生时,我想通知客户。我遇到的问题是我能够从客户端连接到服务器,但不能反过来,因为客户端恰好位于 NAT(路由器)后面。目前,我每分钟都会请求检查通知。如果我能有一种技术,我可以更快地通知客户,而不必提出这么多不必要的请求,那就太好了。
注意:客户端是ac#控制台应用程序,服务器是一个asp.net网站。
(请注意,如果服务器上发生事件,我会通知所有客户端)
我有一个执行某些操作的 Web 服务。当事件发生时,我想通知客户。我遇到的问题是我能够从客户端连接到服务器,但不能反过来,因为客户端恰好位于 NAT(路由器)后面。目前,我每分钟都会请求检查通知。如果我能有一种技术,我可以更快地通知客户,而不必提出这么多不必要的请求,那就太好了。
注意:客户端是ac#控制台应用程序,服务器是一个asp.net网站。
(请注意,如果服务器上发生事件,我会通知所有客户端)
使用 SignalR。这是 Microsoft 用于抽象出实时服务器-客户端连接的新库,如果您的设置允许,它支持新的 WebSockets 协议。
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));
await hubConnection.Start();