0

所有 signalR 示例都显示

<script src="/signalr/hubs" type="text/javascript"></script>

没有充分解释它的用途。

对于 Html 页面,它是文件夹的位置。那里没有脚本。

为什么以及如何使用这条线?

4

1 回答 1

3

/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;

希望这可以帮助!

于 2013-04-12T18:19:29.780 回答