2014-10-29 47 views
-1

我只是想知道,即使沒有連接的用戶,是否可以將數據從集線器方法存儲到數據庫中?即使用戶處於離線狀態,也可以在表格中存儲消息signalR

所以我有一個基本的方法,從一個組外發送一個消息給一個組中的每個用戶,這很好(發送消息和商店在分貝),但我只是注意到,如果沒有連接的用戶將數據存儲到數據庫的方法不會觸發。人們會假設客戶端功能何時啓動,它仍然被髮送到集線器進行處理?

一個用於可視化參考的小代碼片段。

public void Send(string campaignName, string message, string name, string email, string query) 
{ 
    //Save Support Request 
    int campaignID = Business.Campaign.getCampaignIDByCampaignName(campaignName); 

    string n = HttpContext.Current.Server.HtmlEncode(name); 
    string e = HttpContext.Current.Server.HtmlEncode(email); 
    string q = HttpContext.Current.Server.HtmlEncode(query); 

    Business.SupportRequest.newSupportRequest(n, e, q, campaignID); 

    //If users online send message 
    List<Business.User> users = Business.User.getUsersFromCampaign(campaignName); 
    foreach (var u in users) 
    { 
     Clients.Client(u.connectionID).sendSupportRequest(message); 
    } 
} 

我可以很容易地從客戶端調用另一個函數插入到數據庫但id,而不是保留在集線器。

任何幫助非常感謝!

+0

如果你想在你可以只檢查'如果(u.IsNullOrEmpty || u.Length> 0)'然後調用sendSupportRequest(消息)在foreach發送此給用戶但是爲什麼您是否想向未連接的人發送消息,除非您計劃在下次登錄時將這些消息發送給該用戶。 – MethodMan 2014-10-29 21:05:22

+0

@DJKRAZE發送消息給用戶可以在他們連接時正常工作,這很有意義,同時它存儲到數據庫。我想要做的就是保存到數據庫,即使用戶斷開連接。如果沒有用戶連接,我的保存方法不會觸發。 – 2014-10-29 21:19:38

+0

那麼我建議你不明白什麼部分?你能寫一個有條件的支票來檢查嗎? – MethodMan 2014-10-29 21:21:09

回答

1

回答我自己的問題。是的,即使沒有用戶連接,您也可以在集線器內激發另一種方法。

我的問題是HTMLEncode沒有觸發時,從一個單獨的域上的iframe調用。它拋出了一個Null異常。用signalR進行調試比標準稍微複雜一些。

問候,

相關問題