SignalR组未调用(SignalR groups not invoked)

2019-10-17 16:57发布

我做我的第一个测试与SignalR。 我与聊天消息玩弄,但是这仅仅是第一步,以取代所有从客户端的轮询今天,我有我的网站服务器。

我有很多的,我想无论是他们的登录或通过他们的ID通知某些用户场景。 我们的想法是,我只要他连接增加每个用户两类。 我这样做是OnConnected和事件被调用。

当我发送聊天消息,我有两种模式:公共或个人。 如果是个人的通知发件人和收件人应得到通知。 发送方收到消息,但该组从来不会。 这似乎是不可能发现了一组有多少成员。

任何想法是怎么回事错在这里?

public class GlobalHub:Hub
{
    private Users user;

    private void AuthenticateUser()
    {
        var ydc = new MyDataContext();
        user = ydc.Users.First(u => u.Login == HttpContext.Current.User.Identity.Name);
    }

    public override Task OnConnected()
    {
        var ydc = new MyDataContext();
        user = ydc.Users.First(u => u.Login == HttpContext.Current.User.Identity.Name);

        Groups.Add(Context.ConnectionId, user.Login);
        Groups.Add(Context.ConnectionId, user.ID.ToString());
        return base.OnConnected();
    }


public void SendChatMessage(string message, string recipient)
{
    AuthenticateUser();
    var cm = ChatController.AddChatMessage(user.Login, user.ID, recipient, tmessage);

    if (recipient != "")
    {
        Clients.Caller.NewMessage(cm);
        Clients.Group(recipient).NewMessage(cm);
    }
    else
    {
        Clients.All.NewMessage(cm);
    } 
}
}

Answer 1:

它看起来像Groups.Add不会立即加入到组的连接,而是返回一个任务,需要启动。 请返回Groups.Add的结果作为OnConnectedMethod的结果。

另请参见更详细的解释为: https://stackoverflow.com/a/15469038/174638



文章来源: SignalR groups not invoked
标签: signalr