所有 signalR 示例都显示
<script src="/signalr/hubs" type="text/javascript"></script>
没有充分解释它的用途。
对于 Html 页面,它是文件夹的位置。那里没有脚本。
为什么以及如何使用这条线?
所有 signalR 示例都显示
<script src="/signalr/hubs" type="text/javascript"></script>
没有充分解释它的用途。
对于 Html 页面,它是文件夹的位置。那里没有脚本。
为什么以及如何使用这条线?
/signalr/hubs 页面是由 SignalR 自动生成的 JavaScript 文件,其中包含为 SignalR 项目中的每个集线器生成的集线器代理。
例如(从http://shootr.signalr.net/signalr/hubs获得)让我们看一下代码片段。
proxies.h = this.createHubProxy('h');
proxies.h.client = { };
proxies.h.server = {
changeViewport: function (viewportWidth, viewportHeight) {
return proxies.h.invoke.apply(proxies.h, $.merge(["changeViewport"], $.makeArray(arguments)));
},
fire: function () {
return proxies.h.invoke.apply(proxies.h, $.merge(["fire"], $.makeArray(arguments)));
},
...
“this”指的是集线器连接,或者更确切地说是 $.connection.hub。所以我们本质上是在说 proxies.h = $.connection.hub.createHubProxy('h');
现在 'h' 是服务器上的集线器 请参阅https://github.com/NTaylorMullen/ShootR/blob/master/ShootR/ShootR/Server/GameHub.cs,更具体地查看集线器名称属性。
接下来我们有 proxies.h.client; 这是用户能够声明将从服务器调用的客户端函数的端点。
然后我们有 proxies.h.server,它引用了 GameHub.cs 上的所有公共集线器方法。所以有些函数是changeViewport,和fire。此代码是在服务器上自动生成的,以代表您的每个集线器。
最后在 signalr/hubs 文件的末尾,我们将所有动态创建的集线器扩展到 $.connection 对象,以便用户可以通过以下方式访问它们
var myGameHub = $.connection.h;
希望这可以帮助!