如何从 signalr hub 中的用户 ID 获取连接 ID

How to get Connection id from user id inside signalr hub

我有一个具有类似功能的信号集线器

public void SendSurveyNote(int surveyId,List<string> users){}

这里我想把列表里的所有用户都加到一个群里"Survey_" + surveyId然后给群里发消息。但我只有用户 ID,但加入群组需要连接 ID。那我怎么办呢。 另外我想知道在没有组的情况下向每个用户发送消息会不会是一个性能问题?

当我像这样添加一个新的调查时,我调用了上面的函数

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);

谢谢

您可以访问 Context 内的连接 ID。您需要在 OnConnected 内建立群组。在您的集线器上观察以下实施,我们将其称为 MyHub。我们还将按 Context.User.Identity.Name 分组,为每个用户建立一个唯一的组,但这可以是您希望分组的任何值。

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

        return base.OnConnected();
    }
}

有关详细信息,请参阅 Working with Groups in SignalR