【发布时间】:2013-06-13 11:38:45
【问题描述】:
SignalR 在我的开发机器和我们的开发测试服务器上运行良好,但是当我将它部署到我们的验收测试机器(应该与开发测试机器相同的配置)时,我得到一个
未捕获的错误:SignalR:连接尚未完全初始化。 使用 .start().done() 或 .start().fail() 在 连接已开始。
我也跟踪到 signalR 在连接实际准备好使用之前过早调用 done 函数的问题
有人遇到过同样的问题吗?
相关代码,处理所有 SignalR 通信的类的构造函数
var Proxy = function (eventAggregator) {
this.eventAggregator = eventAggregator;
this.hub = $.connection.eventAggregatorProxyHub;
this.hub.client.onEvent = this.onEvent.bind(this);
this.queueSubscriptions = true;
this.queuedSubscriptions = [];
$.connection.hub.start().done(this.onStarted.bind(this));
};
我将所有调用排队,直到调用完成
onStarted: function () {
this.queueSubscriptions = false;
this.sendSubscribeQueue();
}
但是直接调用 Done(我认为它实际上与 start 函数同步调用),当发送第一条消息时,我得到上述消息
解决方案:
我发现了问题,我们使用的是MVC4捆绑,部署脚本在部署前没有清除目标区域。因此,scripts 文件夹中有多个版本的 signalR,并且捆绑框架会全部加载它们。 :D 修复部署脚本后,一切正常
【问题讨论】:
标签: signalr