如何解决有没有办法避免在 HubConnection 类中使用魔术字符串
我在服务器上有一个强类型集线器:
public Foo : Hub<Bar> {}
Bar
应该是一个接口,包括客户端可用的方法。但这只能解决一半的问题(服务器的一半)。在客户端,我仍然需要使用魔法字符串来定义调用 Bar
方法的处理程序:
hubConnection.On<int>("MethosInsideBar",param => DoSomething(param));
有没有办法避免这样做?难道不应该有一种方法来实现 Bar
客户端并将来自服务器的调用链接到该实现吗?
解决方法
在客户端,我还是要使用魔法字符串来定义 调用 Bar 方法的处理程序:
hubConnection.On<int>("MethosInsideBar",param => DoSomething(param));
有没有办法避免这样做?不应该 有一种方法可以实现 Bar 客户端并链接来自 那个实现的服务器?
据我所知,强类型集线器仅适用于服务器端,我们可以在控制器中inject the strongly-typed HubContext,然后调用集线器方法。它可以防止客户端中的方法名称拼写错误或丢失。
在客户端,我们仍然需要使用 Invoke
方法调用集线器上的公共方法,并使用 HubConnection 的 on
方法定义一个方法来接收来自集线器的消息。
从客户端调用公共集线器方法时,如果要使用强类型集线器,可以将强类型集线器上下文注入控制器,然后使用JQuery Ajax调用控制器的动作方法,然后使用强类型集线器方法.请参阅此主题:SignalR - Call statically typed hub from Context。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。