1

我正在尝试使用 SignalR 创建聊天应用程序。为了使发送私人消息成为可能,我想将客户分配到具有其 profileID 名称的组。所以我可以简单地调用组的 addMessage 函数来发送给特定的客户端。

当我转到此页面时:https ://github.com/SignalR/SignalR/wiki/Hubs

它告诉我向 Hub 添加一个名为 Join() 的函数。在这里,我可以将传入的客户端添加到组中。所以我创建了这段代码:

    [HubName("Chat")]
    public class ChatHub : Hub
    {
            public Task Join()
            {
                    if (HttpContext.Current.User.Identity.IsAuthenticated)
                    {
                            Profiel_DataHelper profiel = new Profiel_DataHelper(HttpContext.Current.User.Identity.Name);
                            return Groups.Add(Context.ConnectionId, profiel.ProfielID.ToString());
                    }
                    else
                    {
                            return null;
                    }
            }

......

当我想调用特定客户端时,我使用以下代码:

    var context = GlobalHost.ConnectionManager.GetHubContext();
    context.Clients.Group(profielidNaar).addTyptOnline(profielidVan);

但是当我运行程序时,根本没有调用 Join() 任务,因此我对组的调用也不起作用。

我究竟做错了什么?

4

1 回答 1

1

加入是您需要从客户端调用的集线器上的一种方法。没有人会为您调用它,并且“加入”不是一种自动调用的特殊方法。该文档向您展示了如何声明“可以”从客户端调用的方法。

还有其他方法可以知道客户端何时连接、重新连接和断开连接,这里有详细说明: https ://github.com/SignalR/SignalR/wiki/Hubs#detecting-connect-reconnect-and-disconnect-clients-in-hubs

于 2013-04-11T09:54:46.927 回答