即使用户离线signalR,也要在表中存储消息

时间:2014-10-29 20:56:28

标签: c# signalr

我只是想知道即使没有连接用户,是否可以从集线器方法将数据存储在数据库中?

所以我有一个基本的方法,可以从一个组外的组中向每个用户发送一条消息,这很好用(在db中发送消息和存储)但我只是注意到如果没有连接的用户那么方法将数据存储到数据库中不会触发。人们会假设当客户端功能触发时它仍会被发送到集线器进行处理?

用于视觉参考的小代码片段。

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而不是将其保存在集线器中。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

回答我自己的问题。是的,即使没有用户连接,您也可以在集线器内触发另一种方法。

我的问题是HTMLEncode在单独域上从iframe调用时没有触发。它抛出了一个空例外。使用signalR进行调试比标准稍微复杂一些。

此致