Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从信号集线器内部的用户id获取连接id_C#_.net_Signalr_Signalr Hub - Fatal编程技术网

C# 如何从信号集线器内部的用户id获取连接id

C# 如何从信号集线器内部的用户id获取连接id,c#,.net,signalr,signalr-hub,C#,.net,Signalr,Signalr Hub,我有一个信号集线器,功能如下 public void SendSurveyNote(int surveyId,List<string> users){} private static HubConnection hubConnection = new HubConnection(ConfigurationManager.AppSettings["BaseUrl"]); private static IHubProxy hubProxy = hubConnection.CreateH

我有一个信号集线器,功能如下

public void SendSurveyNote(int surveyId,List<string> users){}
private static HubConnection hubConnection = new HubConnection(ConfigurationManager.AppSettings["BaseUrl"]);
private static IHubProxy hubProxy = hubConnection.CreateHubProxy("myHub");
await hubConnection.Start();
hubProxy.Invoke("SendSurveyNote", model.Id, users);

谢谢

您可以在上下文中访问连接ID。您需要在OnConnected中建立组。在您的hub上观察以下实现,我们称之为MyHub。我们还将按Context.User.Identity.Name分组,以便为每个用户建立唯一的组,但这可以是您希望分组的任何值

public class MyHub: Hub
{
    public override Task OnConnected()
    {
        Groups.Add(Context.ConnectionId, Context.User.Identity.Name)

        return base.OnConnected();
    }
}

有关更多信息,请参见。您可以在上下文中访问连接ID。您需要在OnConnected中建立组。在您的hub上观察以下实现,我们称之为MyHub。我们还将按Context.User.Identity.Name分组,以便为每个用户建立唯一的组,但这可以是您希望分组的任何值

public class MyHub: Hub
{
    public override Task OnConnected()
    {
        Groups.Add(Context.ConnectionId, Context.User.Identity.Name)

        return base.OnConnected();
    }
}

有关更多信息,请参见

谢谢,这很有帮助。但问题的另一部分是,向每个用户发送自己的消息是否会导致性能问题?我将定义一个客户机方法,您的服务器方法SendSurveyNote将调用该方法,然后该方法再次向服务器查询您希望发送的内容。这会将处理反向到当前已连接以自行发出请求的用户。这可能是您希望采取的理想方法。这就是我将要做的。我的消息将刺激客户端从服务器获取未读通知。但我的问题是,要为每个用户或整个团队发送的刺激信息是什么?什么是最好的?这完全取决于你能接触到什么。我的印象是,用户处于1:1的分组中,您通过他们的Context.User.Identity来调用他们。如果是这样,你只会刺激用户以独特的方式查询他们的更新。虽然使用“组”一词会产生误导,但不会有整个组。我们必须这样做这是在信号器发送消息给特定的用户-即使他们是在一个组中自己。有道理?请让我知道-我可以继续与您讨论建议谢谢您@sal。我真的不知道小组是如何工作的,这是我的第一个信号器项目。正如我所说的,消息将不包含任何数据,只是告诉客户端从服务器请求更新。所以我了解到,这个组只不过是连接的一种分类?当向群组发送消息时,它会为每个用户发送一条消息?谢谢,这很有帮助。但问题的另一部分是,向每个用户发送自己的消息是否会导致性能问题?我将定义一个客户机方法,您的服务器方法SendSurveyNote将调用该方法,然后该方法再次向服务器查询您希望发送的内容。这会将处理反向到当前已连接以自行发出请求的用户。这可能是您希望采取的理想方法。这就是我将要做的。我的消息将刺激客户端从服务器获取未读通知。但我的问题是,要为每个用户或整个团队发送的刺激信息是什么?什么是最好的?这完全取决于你能接触到什么。我的印象是,用户处于1:1的分组中,您通过他们的Context.User.Identity来调用他们。如果是这样,你只会刺激用户以独特的方式查询他们的更新。虽然使用“组”一词会产生误导,但不会有整个组。我们必须这样做这是在信号器发送消息给特定的用户-即使他们是在一个组中自己。有道理?请让我知道-我可以继续与您讨论建议谢谢您@sal。我真的不知道小组是如何工作的,这是我的第一个信号器项目。正如我所说的,消息将不包含任何数据,只是告诉客户端从服务器请求更新。所以我了解到,这个组只不过是连接的一种分类?当向一个组发送消息时,它将为每个用户发送一条消息?