当前位置: 首页 > 编程语言 > C#

SignalR:使用GlobalHost.ConnectionManager发送数据不起作用Share

时间:2023-04-10 15:21:22 C#

SignalR:使用GlobalHost.ConnectionManager发送数据不起作用{客户。All.sayHi("你好");GlobalHost.ConnectionManager.GetHubContext().Clients.All.sayHi("你好");我的(相关的)javascript看起来像这样:$.connection.MessageHubBub.client.sayHi=function(message){console.log("Hello");};$.connection.hub.start().done(function(){$.connection.MessageHubBub.server.ServerMethod();});真的很奇怪问题是“Hello”只打印一次,我希望它打印两次(因为“sayHello”被调用了两次)。通常,我在使用从GlobalHost.ConnectionManager获得的“客户端”对象向客户端发送消息时遇到了问题,因此我提炼了这个问题以说明什么不起作用。我看过很多帖子,其中人们遇到问题,包括在启动集线器之前没有向客户端注册js处理程序或没有引入正确的js依赖项,但这些似乎不是我的问题。有什么原因我不能使用GlobalHost.ConnectionManager.GetHubContext()向客户端发送消息。客户?编辑:作为对Lars的回应,我确实有一个自定义依赖项解析器,以便我可以将Unity集成到SignalR中。我按照我在这里找到的一个例子:http://www.kevgriffin.com/using-unity-for-dependency-injection-with-signalr/我唯一的配置如下:RouteTable.Routes.MapHubs(newHubConfiguration(){Resolver=newSignalRUnityDependencyResolver(unityContainer)});SignalRUnityDependencyResolver如下所示:publicclassSignalRUnityDependencyResolver:DefaultDependencyResolver{privateIUnityContainer_container;publicSignalRUnityDependencyResolver(IUnityContainercontainer){_container=container;}publicoverrideobjectGetService(TypeserviceType){if(_container.IsRegistered(serviceType))return_container.Resolve(serviceType);否则返回base.GetService(serviceType);}publicoverrideIEnumerableGetServices(TypeserviceType){if(_container.IsRegistered(serviceType))return_container.Resolve)serviceType(;elsereturnbase.GetServices(serviceType);}}使用自定义依赖解析器时,将其传递给HubConfiguration是不足够的。您需要将解析器实例存储在某处并像这样使用它来访问连接管理器和您的集线器上下文:MyDependencyResolver.Resolve().GetHubContext();或者将GlobalHost中的默认依赖解析器设置为您的示例:varmyResolver=newSignalRUnityDependencyResolver(unityContainer);RouteTable.Routes.MapHubs(newHubConfiguration(){Resolver=myResolver});GlobalHost.DependencyResolver=myResolver;(然后就可以使用上面默认的GlobalHost.ConnectionManager.GetHubContext())是C#学习教程:SignalR:UsingGlobalHost.ConnectionManagertosenddatadoesnotwork。分享的所有内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: