如何调用 signalR 函数仅用于 web API Caller by c#
how Call a signalR function just for web API Caller by c#
我需要在刚刚调用 Web API 方法的客户端上回调一个函数。我可以发回给所有用户,但我只需要呼叫呼叫者即可。
[HttpPost]
public WebResult Logout()
{
var cc =Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<EventsHub>();
cc.Clients.All.TestLogOut();
}
我知道如果我有来电者的connectionId可能是可能的,但我不知道怎么可能?
另外,似乎有一些 IHbubCallerContext...它是什么,它有帮助吗?如果可以得到调用者和connectioId!
cc.Clients.Client("ConnectionId").TestLogoutCurrent();
如何回调调用者函数或如何获取调用者 connectionId?
谢谢
您可以从 SignalR Hub 实现中调用调用方客户端上的函数:
[HubName("MyHub")]
public class MyHub : Hub
{
public void logout()
{
Clients.Caller.clientLogout();
}
}
终于找到解决办法了,貌似我们无法在 web 中获取连接 ID API,
所以我们需要创建一个 HUB class 并从客户端调用一个方法。在那个方法中,我们有调用者和连接 ID,所以我们可以回调这个方法。
public class EventHub : Hub
{
public void LogOutSignalRTest()
{
var cc = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<EventsHub>();
cc.Clients.Client(Context.ConnectionId).clientlogout();
}
}
这里的上下文是 HubCallerContext 的类型,所以我们有连接 ID,
clientlogout 是客户端的一个函数。
我需要在刚刚调用 Web API 方法的客户端上回调一个函数。我可以发回给所有用户,但我只需要呼叫呼叫者即可。
[HttpPost]
public WebResult Logout()
{
var cc =Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<EventsHub>();
cc.Clients.All.TestLogOut();
}
我知道如果我有来电者的connectionId可能是可能的,但我不知道怎么可能?
另外,似乎有一些 IHbubCallerContext...它是什么,它有帮助吗?如果可以得到调用者和connectioId!
cc.Clients.Client("ConnectionId").TestLogoutCurrent();
如何回调调用者函数或如何获取调用者 connectionId?
谢谢
您可以从 SignalR Hub 实现中调用调用方客户端上的函数:
[HubName("MyHub")]
public class MyHub : Hub
{
public void logout()
{
Clients.Caller.clientLogout();
}
}
终于找到解决办法了,貌似我们无法在 web 中获取连接 ID API, 所以我们需要创建一个 HUB class 并从客户端调用一个方法。在那个方法中,我们有调用者和连接 ID,所以我们可以回调这个方法。
public class EventHub : Hub
{
public void LogOutSignalRTest()
{
var cc = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<EventsHub>();
cc.Clients.Client(Context.ConnectionId).clientlogout();
}
}
这里的上下文是 HubCallerContext 的类型,所以我们有连接 ID, clientlogout 是客户端的一个函数。