在我的应用程序中,我计划使用SignalR,以便后端代码根据服务器上出现的情况向登录的用户发送消息。特别是,我希望SignalR在后端发生任何事情时都能调用JS客户端上的方法。这可能是在后端发生的周期性计算,突然超过阈值,我需要在JS客户端上为特定用户调用一些东西。特定的用户是这里的关键元素。只有应该知道这一点的用户。我假设这对于SignalR来说应该是非常简单的,但我在理解实现这一点的方法时遇到了一些问题。我的解决方案如下;
因此,要应用此解决方案,我需要获取有关刚刚在C#集线器内登录的用户的信息,以便创建组并加入他。
现在我的问题是,如何从登录到C#集线器中的应用程序的用户那里访问所需的信息。当然,我对用户名标识符感兴趣。我一直在想,Hub中的Context属性应该给我所需的信息(这是我对MS Docs的理解),但我不能让它工作。请研究下面的代码。
// As soon as a User logs in, below method fires. I try to get the information
// in here but no success
public override async Task OnConnectedAsync()
{
var CID = Context.ConnectionId; // this gives a unique connection ID
var user = Context.User; // This returns nothing
var userID = Context.UserIdentifier; // This returns nothing
var httpContextObject = Context.GetHttpContext(); // This returns nothing
await base.OnConnectedAsync();
}
当我从JS调用Context Hub中的其他方法时,该方法将被激发并传递信息,但我仍然无法访问C#属性应提供的信息。
请首先帮助我确认或更正我的整体方法,以及是否有众所周知的最佳实践。其次,请让我知道如何获得上下文属性在Hub中提供的信息,以及这些信息通常在哪里可用,以及如何访问和使用它们。
在此之前,非常感谢您。
https://stackoverflow.com/questions/56944923
复制相似问题