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();
}
但是直接调用完成(我认为它实际上与启动函数同步调用),当发送第一条消息时,我得到上述消息
解决方案:
我发现了问题,我们使用的是MVC4捆绑,部署脚本在部署前没有清除目标区域。因此,scripts 文件夹中有多个版本的 signalR,并且捆绑框架会全部加载它们。:D 修复部署脚本后,一切正常