微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法避免在 HubConnection 类中使用魔术字符串

如何解决有没有办法避免在 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 举报,一经查实,本站将立刻删除。