我有一个Web服务来执行一些操作。发生事件时,我想通知客户。我有的问题是,我能够从客户端连接到服务器,而不是其他方式,因为客户端恰好在NAT(路由器)后面。目前,我正在每分钟发出一次请求以检查通知。如果我可以有一种技术,我可以更快地通知客户,而无需提出太多不必要的请求,那将是一件好事。从ASP.Net服务器推送通知
注意: 客户端是一个c#控制台应用程序,服务器是一个asp.net网站。
(注意,如果一个事件我会想通知所有客户端的服务器上发生的)
我有一个Web服务来执行一些操作。发生事件时,我想通知客户。我有的问题是,我能够从客户端连接到服务器,而不是其他方式,因为客户端恰好在NAT(路由器)后面。目前,我正在每分钟发出一次请求以检查通知。如果我可以有一种技术,我可以更快地通知客户,而无需提出太多不必要的请求,那将是一件好事。从ASP.Net服务器推送通知
注意: 客户端是一个c#控制台应用程序,服务器是一个asp.net网站。
(注意,如果一个事件我会想通知所有客户端的服务器上发生的)
使用SignalR。这是微软用于抽象出实时服务器 - 客户端连接的新库,如果您的设置允许,它支持新的WebSockets协议。
Taken from asp.net website. The Client Code
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();
ASMX是一种过时的技术,并且不应该被用于新的开发。 WCF应该用于Web服务客户端和服务器的所有新开发。一个暗示:微软已经在MSDN上退役了[ASMX Forum](http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/threads)。最后,ASMX无法通知。 –
阅读“长期投票”。实质上:您有一个轮询请求正在运行,它会在服务器上等待,直到超时(例如30秒)或事件发生。然后立即开始另一轮民意调查。 –
看看这个:[Comet](http://en.wikipedia.org/wiki/Comet_(编程)) –