我有一個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_(編程)) –