2013-12-20 35 views
0

我正在創建一個網站,在這裏人們可以互相添加朋友。ASP通知機制

比如我有2個用戶:

User ONE with UserID = 1 
User TWO with UserID = 2 

User One增加User Two,我寫這篇文章的數據庫,一個整數跟蹤狀態:

0 = waiting 1 = accepted (are now friends)

如果被拒絕 - >我只是從數據庫中刪除該記錄。我想給User Two發送一個通知。

因此,User Two應該得到一個關於該User One已添加他,而不刷新頁面的通知。

將某人添加爲朋友後,我可以使用什麼來創建通知?

我應該看看在添加記錄後向網站發送內容的數據庫上的某種觸發器,還是有其他機制,你們推薦我?

這是一個ASPX網站,沒有MVC。

我想用於消息系統的機制。

回答

1

有3種方式實現這一目標,從最簡單到最複雜的:

  1. 輪詢
    寫網站上的每x分鐘調用REST服務,並更新

    頁面的DOM一個javascript
  2. 長輪詢
    與輪詢類似,但保持開放式連接,即時回覆而無需在輪詢之間等待。需要具有能夠保持開放的連接池和服務器上的後臺線程的API輪詢數據庫更改,而如果需要

  3. 網絡套接字
    升級的連接必須充分地滲透到的JavaScript兩種方式連接(websocket協議)。類似於長輪詢服務器端。

正如你可以看到任何其他選項比1是相當複雜的,但你可以在SingalR library看看,讓你開始。

+0

謝謝,最推薦的是什麼? – Swag

+0

大型網站(臉書)實施所有這些,從3降級到1.如果你只有少數遊客去1,如果你有負載問題向上移動。 – Sklivvz

+0

但是,如果我發送通知,並且用戶點擊「隱藏」通知,定時器將重新檢查數據庫併發送另一個通知,並且此循環將繼續,對嗎?因此,輪詢將通過通知「垃圾」給用戶 – Swag

0

您可以使用AJAX來輪詢數據庫中的更新,AJAX主要用於通過異步操作避免表單提交。

這裏是AJAX輪詢的簡單jQuery例如:

function doPoll(){ 
    $.post('ajax/test.html', function(data) { 
     alert(data); // process results here 
     setTimeout(doPoll,5000); 
    }); 
} 

此外,布拉德中號評論說,可以「緩存」的「朋友」表到內存中,並調查針對它而不是DB - 它會更快。

+0

或者只是針對這些類型的事件輪詢應用程序緩存(或緩存服務器)。 –

+0

他沒有提到緩存,但確實可能會更快。 –