我有一个具有类似功能的信号器集线器
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);
感谢
答案 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