代码之家  ›  专栏  ›  技术社区  ›  ikwillem

SignalR:未调用Task Join()

  •  1
  • ikwillem  · 技术社区  · 12 年前

    我正在尝试使用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()Task根本没有被调用,因此我对组的调用也不起作用。

    我做错了什么?

    1 回复  |  直到 12 年前
        1
  •  1
  •   davidfowl    12 年前

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

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