在开始之前,我想提一下,这不完全是重复的,其他类似的问题对我的案例没有任何有用的答案 .
在我的ASP.Net Core 2.1中,我有一个可以使用AJAX调用的动作(它的名字是 CreateConversation
) .
在这个应用程序中,我为我的应用程序上的每个用户都有一个活动的SignalR连接(因此当用户刷新/导航页面时,连接就会启动) .
当使用AJAX调用此操作时(用户单击页面上的某个按钮),我想将该连接添加到我的 Hub
的特定组中 . 这里的问题是,为了能够从控制器添加到集线器组的连接,我需要从HubCallerContext访问该连接的Id),并且此ID在集线器外部不可用 .
public class ConversationsController
{
public async Task<IActionResult> CreateConversation()
{
// How can this be made possible?
await Groups.AddToGroupAsync(/**Context.ConnectionId**/, "SomeGroup");
}
}
直到现在,我从未预先设置过我的集线器连接的ID(我还没需要) . 是否持久化HubCalledContext.Id必须能够解决这个问题?还是有更好的方法来解决这个问题?我正在考虑在会话中持久化它,但我无法访问SignalR中的HttpContext . 我感谢任何最佳建议,以便能够从集线器本身外部向所需的集线器组添加连接 .
1 回答
据我所知,您希望将连接ID添加到控制器中的任何组
startup.cs
枢纽班
调节器