2012-02-24 40 views
1

我不知道以下是否可能:加載頁面後將內容推送到客戶端

我有我在我的網站中引用的dll。這個dll使遠程套接字連接。套接字連接在後臺等待,並且在套接字接收到一些數據後,dll會通過事件報告數據。

連接在頁面加載期間打開。

現在,例如,我想在新數據到達時更新頁面上的標籤。

我不知道這將如何工作。我假設我可以在頁面上設置一些更新控件的計時器,但它看起來並不「最佳」,因爲我已經通過我的事件調用了代碼。 「最佳」UpdatePanel或接口等待事件的更新以及事件發生時的「更新」,而不是基於時間。

我的問題是 - 這可能嗎?

+2

它更容易加載頁面的客戶端上,然後發起呼叫通過AJAX的服務器,讓頁面的方法等待(在頁面加載,但你可以顯示一個小「加載」符號的地方),然後,當它收到來自服務器的響應,更新。這是一個很好的用例頁面方法 - 看http://ajax.asp.net/docs/tutorials/ExposingWebServicesToAJAXTutorial.aspx。一旦您的原始網頁已經交付,你真的不應該有任何東西,以保持它活着背後側的Web表單/碼 - 它應該是基於請求 - 響應。 – dash 2012-02-24 13:03:18

回答

2

您可以使用稱爲「長拉」或「網絡套接字」的技術。

有圖書館,如SignalR,可以幫助你。

當客戶端的瀏覽器支持時,它們通常使用Web套接字,而當客戶端的瀏覽器支持時,它們通常會使用Web套接字,

使用這些庫,您可以按照需要將命令/數據從服務器「推送」到客戶端的瀏覽器。

1

你應該考慮扭轉這種情況;而不是異步啓動來自代碼的調用,然後更新客戶端,則應將原始頁面交付給客戶端。

一旦頁面加載客戶端,您可以向服務器發出AJAX調用以檢索您想要的數據 - 並在發生這種情況時顯示一個「我正在加載」的符號。

Page Methods are ideal for this.

經典的ASP.Net網頁應該持續爲用戶請求的持續時間。發生回發時,它可以有效地從用戶的視圖狀態,會話和您維護的任何其他狀態重建呼叫狀態。例如,它從不關心用戶是否離開(雖然它可能感覺有點孤單)。

讓它在更長的時間內運行有很多問題,但是,您可以實施client callbacks。然而,雖然服務器啓動了這個,但客戶端管理生命週期,所以它類似於頁面方法。

1

服務器無法推送客戶端,這是網絡工作原理。 有兩種可能的方式來完成你的任務。在頁面上

  1. 使Timer,並在服務器請求太多看,如果有什麼改變了客戶端和服務器之間
  2. 長期開放拉連接,像Facebook一樣。這聽取
    的事件,並從服務器獲取數據。它可以是,例如xmpp或任何其他。
相關問題