我的理解是,每次客户端调用集线器方法(通过其集线器代理)时,都会创建一个新的服务器端Hub实例。但是,如果我想要一个仅使用(通过服务器业务逻辑)使用以下语法向客户端发送消息的集线器: -
Clients.All.Notify(data);
顺便说一下,我会使用.Net客户端,它会使用这种语法接收这样的消息: -
_myHubProxy.On<SomeData>("Notify", data => ...);
如果客户端从不调用任何集线器方法,那么集线器是否会被实例化?
修改 Nikola.Lukovic提供的文章(见下面的评论)说:
每次需要处理Hub操作时,SignalR都会创建一个Hub类的新实例,例如客户端连接,断开连接或对服务器进行方法调用时。
虽然我(有点)理解每次调用方法时需要实例化集线器,但我很好奇为什么在连接(和断开连接)时它也必须这样做。我想知道它的任务之一是在Hub和客户端集线器代理上指定的任何On<T>
事件处理程序之间建立“链接”吗?