如何从信号器集线器内的用户ID获取连接ID

时间:2015-07-20 19:58:44

标签: c# .net signalr 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);

感谢

1 个答案:

答案 0 :(得分:4)

您可以访问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