SignalR是如何访问此代码的
本文关键字:代码 访问 何访问 SignalR | 更新日期: 2023-09-27 17:57:27
我的Hub类中有以下方法:
public class NotificationHub : Hub
{
public void SendAll(string message)
{
if (1 == 0)
Clients.All.broadcastMessage(message); // this should be unreachable
}
}
然后,我(正在尝试)从服务器端代码中调用该方法,如下所示:
GlobalHost.ConnectionManager.GetHubContext<NotificationHub>()
.Clients.All.broadcastMessage("broadcastMessage was called");
方法被调用,一切正常。但是,我不希望调用broadcastMessage()
,因为它本来是不可访问的。
我从文件中读到:
您不实例化Hub类,也不从自己的类调用其方法服务器上的代码;SignalR Hubs为您所做的一切管道SignalR每次都会创建一个Hub类的新实例它需要处理集线器操作,例如当客户端连接时,断开连接或对服务器进行方法调用。
参考。http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server
但它看起来根本没有使用我的方法。它只是看起来调用了自己的方法而忽略了我的方法。如何使用SignalR调用自己的方法?
执行此操作时:
GlobalHost.ConnectionManager.GetHubContext<NotificationHub>()
.Clients.All.broadcastMessage("broadcastMessage was called");
你正在绕过方法
public void SendAll(string message)
我不知道为什么你会期望第一个方法被阻止。如果你想让集线器逻辑工作,你必须通过集线器方法(例如:public void SendAll(string message)
)
我喜欢这里提供的解决方案:https://stackoverflow.com/a/17897625/693272如果您想从外部调用hub方法。