【问题标题】:SignalR: Task Join() is not calledSignalR:未调用任务 Join()
【发布时间】:2013-04-11 17:54:46
【问题描述】:

我正在尝试使用 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() 任务,因此我对组的调用也不起作用。

我做错了什么?

【问题讨论】:

    标签: client signalr send


    【解决方案1】:

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

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

    【讨论】:

    • 是的,这行得通,仅在“onconnected”事件中添加客户端是行不通的。您必须真正从客户端调用它。我的代码的问题是我忘记了.server。在对 Join 方法的调用中。
    • 看到你没有显示客户端代码,我不会知道:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多