SignalR初始启动请求需要2-3秒才能与集线器中的多种方法建立连接

时间:2015-10-01 19:51:38

标签: c# knockout.js signalr

真正长标题的道歉!

如果我的项目建立了与集线器的连接,如果附加了许多方法(20+),我真的遇到了问题。时间示例:

[20:44:06 GMT+0100 (GMT Daylight Time)] SignalR: serverSentEvents
transport connected. Initiating start request. 
[20:44:09 GMT+0100 (GMT Daylight Time)] SignalR: The start request   
succeeded. Transitioning to the connected state

这是我试过的

  • 检查集线器的依赖关系以确保它们没有阻止它
  • 使用另一个集线器的依赖关系创建了一个测试集线器
    • 确保从所有依赖项调用方法,但在一个方法中
  • Dev机器是Windows 7所以Websockets对我来说是不可用的,它将部署到的服务器是2008 R2(我认为它不支持websockets)但是我尝试了不同的传输方式看看我是否可以提高性能,但最终得出结论,我会将其留给SignalR客户处理
  • 代理文件约为160kb

对我而言,下一步是尝试打破集线器以确定它是否会改善其运行方式但是想知道是否有其他人对如何避免这样做有任何想法? SignalR不是以这种方式工作的吗?如果您需要我澄清任何要点,请告诉我

谢谢, 马特

编辑:

根据我最初的想法,它似乎没有达到方法的数量。

当元素(通过ID)存在时,我使用for外观将绑定视图模型添加到绑定:

for (var i = 0; i < arguments.length; i++) {
    var viewModel = new arguments[i](connection);
    var element = elements[i];
    console.info("ViewModel: " + viewModel.constructor.name);
    ko.applyBindings(viewModel, element);
    viewModels.push(viewModel);
}

建立连接后,我会调用一个&#39;构造函数&#39;方法init()

connection.start().done(function () {
    for (var j = 0; j < viewModels.length; j++) {
        console.info("Starting ViewModel: " + viewModels[j].constructor.name);
        if (viewModels[j].init != undefined) {
            setTimeout(viewModels[j].init(), 0);
            //viewModels[j].init()
        }
    }
});

随着ViewModel数量的增加,连接时间也会增加......

0 个答案:

没有答案