signalR undefined

时间:2012-08-05 01:50:33

标签: javascript signalr signalr-hub

我第一次尝试使用signalR但是当我的hub' simpleEvent'总是未定义

$(document).ready(function(){

var simple = $.connection.simpleEvent;

...

如果我转到localhost / mywebapp / signalR / hubs,我收到以下错误消息:"无法从localhost下载集线器。无法打开此Internet站点。请求的网站不可用或无法找到。"。但是,如果我再试一次,那么下载的集线器就会看起来像是有正确的集线器信息,例如

// Create hub signalR instance
$.extend(signalR, {
    simpleEvent: {
        _: {
            hubName: 'MyCorp.Siep.App.Web.UI.SimpleEventHub',
            ignoreMembers: ['init', 'timerExpired', 'namespace', 'ignoreMembers', 'callbacks'],
            connection: function () { return signalR.hub; }
        },

        init: function (callback) {
            return serverCall(this, "Init", $.makeArray(arguments));
        },

        timerExpired: function (state, callback) {
            return serverCall(this, "TimerExpired", $.makeArray(arguments));
        }
    }
});

signalR.hub = signalR("/App.Web.UI/signalr")
    .starting(function () {
        updateClientMembers(signalR);
    })
    .sending(function () {
        var localHubs = [];

        $.each(hubs, function (key) {
            var methods = [];

            $.each(this, function (key) {
                if (key === "obj") {
                    return true;
                }

                methods.push(key);
            });

            localHubs.push({ name: key, methods: methods });
        });

        this.data = window.JSON.stringify(localHubs);
    })
    .received(function (result) {
        var callbackId, cb;
        if (result) {
            if (!result.Id) {
                executeCallback(result.Hub, result.Method, result.Args, result.State);
            } else {
                callbackId = result.Id.toString();
                cb = callbacks[callbackId];
                if (cb) {
                    callbacks[callbackId] = null;
                    delete callbacks[callbackId];
                    cb.callback.call(cb.scope, result);
                }
            }
        }
    });

我已经尝试了SignalR样本并且它们工作正常,我已经阅读了很多关于此错误的其他论坛帖子,其中大多数似乎是因为不正确,我假设如果我可以下载集线器那么这不是问题。还有什么可能导致这个问题?

我正在尝试使用signalR:   - Web应用程序   - 在visual studio 2010部署服务器和iis 7中运行   - Intenert Explorer 8   - Windows 2008服务器

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

检查母版页是否已添加正确的脚本参考

<script src="../Scripts/jquery-1.6.4.js" type="text/javascript"></script>
<script src="../Scripts/jquery.signalR.js" type="text/javascript"></script>
<script src="../signalr/hubs" type="text/javascript"></script>

答案 1 :(得分:0)

以下文件很重要(检查正确的顺序):

  1. jQuery JS File
  2. SignalR JS File
  3. HubFile Optinal,如果您正在使用生成的集线器。
  4. 以下是一个示例:

    <script src="Scripts/jquery-1.10.2.min.js"></script>
    <script src="Scripts/jquery.signalR-2.1.0.min.js"></script>
    <script src="signalr/hubs"></script>
    

    检查引用的文件是否在目录中(也许你有一个控制台错误,指出缺少引用的文件。

    如果您正在使用生成的集线器代理,请务必不要禁用自动生成hubproxy文件(路径必须正确)

    var hubConfiguration = new HubConfiguration();
    hubConfiguration.EnableDetailedErrors = true;
    hubConfiguration.EnableJavaScriptProxies = false;
    app.MapSignalR("/signalr", hubConfiguration);