SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论相关的知识,希望对你有一定的参考价值。

 

后台创建了一个DntHub的集线器

技术分享

前台在调用的时候出现了问题(经检查是代理对象创建失败)

技术分享

于是到StackOverflow上面找了下:

http://stackoverflow.com/questions/14146913/signalr-cannot-read-property-client-of-undefined

上面说改成小写就ok了,很多人也解决成功了

逆天改成小写后也解决了,var chat = $.connection.dntHub

也许很多人就直接忽略了~~~~but,我为什么这样就解决了呢?C#的命名规则就是首字母大写啊?

逆天喜欢深究一下,于是打开其动态生成的js,发现了这么一句

技术分享

 

so,原来默认生成了的就是小写开头的,,,,,,,,(⊙o⊙)… 很多人说结束了? NONONO

程序猿需要什么?想象力和反常规的想象力!

那么我就大胆设想,我们是不是可以指定名字呢?

上网搜了下,原来通过 HubName("xxx")可以设置名字

技术分享

 

扩展一下,通过这个可以设置任意名字,不见得和类名相同

 

技术分享

那么再试试?

 

技术分享

看看动态生成的js,

技术分享

嘿嘿,爽!

 

结论:

  如果不自己设置HubName,那么SignalR会自动帮我们生成一个和类名相同并且以小写开头的HubName

  这个问题有两种解决方法,一种js中用首字母小写的HubName,另一种自己指定

 

以上是关于SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论的主要内容,如果未能解决你的问题,请参考以下文章

一步一步学习SignalR进行实时通信_7_非代理

SignalR LongPolling 多个组。为单个客户端添加异常

C# SignalR 异常 - 在收到调用结果之前连接开始重新连接

C#SignalR异常 - 在收到调用结果之前,连接开始重新连接

SignalR:协商请求期间出错:未定义

Uncaught SyntaxError: Invalid Unicode escape sequence异常处理