我正在 .NET Core 中开发一个项目,利用 SignalR 进行实时通信。我需要管理 SignalR Hub 外部的用户连接。具体来说,当用户被删除时,我试图从控制器以编程方式终止特定的用户连接,而不是在集线器本身内。
我尝试直接从控制器访问 SignalR 连接或集线器,但在获取调用“Abort”方法并终止它们所需的用户连接的特定上下文方面面临限制。尽管广泛探索了 SignalR 文档,但我还没有发现一种简单的方法来终止集线器上下文之外的单个用户连接。
任何见解或替代方法将不胜感激!
这是中止信号连接的最简单方法。先检查一下测试结果。
我的测试控制器
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly IHubContext<MainHub> _hubContext;
public HomeController(ILogger<HomeController> logger, IHubContext<MainHub> hubcontext)
{
_logger = logger;
_hubContext = hubcontext;
}
public IActionResult abortconnection(string cid)
{
// how to abort the signalr connection by connectionId
_hubContext.Clients.Client(cid).SendAsync("ForceDisconnect");
return Ok();
}
}
前端的ForceDisconnect事件
connection.on("ForceDisconnect", function () {
console.log("connection abort");
connection.stop();
window.location.href = "https://www.google.com";
});