signalR脚本参考?

时间:2013-04-12 18:04:41

标签: signalr

所有signalR示例都显示

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

没有充分解释它的用途。

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

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

1 个答案:

答案 0 :(得分: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上的所有公共hub方法。所以一些函数是changeViewport和fire。此代码在服务器上自动生成,以代表您的每个集线器。

最后,在signalr / hubs文件的末尾,我们将所有动态创建的集线器扩展到$ .connection对象,以便用户可以通过

访问它们
var myGameHub = $.connection.h;

希望这有帮助!