gpt4 book ai didi

javascript - 如何防止 signalR 错误停止进一步执行 javascript

转载 作者:行者123 更新时间:2023-11-30 17:36:55 25 4
gpt4 key购买 nike

我正在开发一个 asp.net mvc 项目,我们在该项目中使用 SignalR 在不同 View 中进行实时连接。效果很好,除了如果 SignalR 出现问题,javascript 的执行会停止。通常,如果我的自托管应用程序已关闭或发生其他连接问题,则此错误将是一个问题。

GET http://localhost:8081/signalr/hubs net::ERR_CONNECTION_REFUSED List:328
Uncaught TypeError: Cannot read property 'client' of null

如前所述,如果发生这种情况,它会阻止我所有其他 javascript 的执行,从而无法正确呈现我的 View 或布局。有没有办法解决这个问题,让 View 继续加载并运行它的 javascript?

我的典型 View 是这样的:

@model Services.Models.SomeModel
<script src="~/Scripts/jquery.signalR-2.0.2.js"></script>
<script src="http://localhost:8081/signalr/hubs"></script>
<script src="~/Scripts/signalR.connector.js"></script>
<script src="~/Scripts/signalR.fleet.js"></script>
<div id="page-content">
...
</div>

连接器看起来像这样:

$.connection.hub.url = "http://localhost:8081/signalr";

//Enable logging
$.connection.hub.logging = true;

// Proxy created on the fly
var messageHub = $.connection.myHub;
if (messageHub == null)
return null;

messageHub.client.timeEnabled = true;

... ommitted functions ...


$.connection.hub.start(function () {
var id = $('#signalRId').text();
messageHub.server.joinGroup("operationStatus-" + id);
console.log("Joined group: operationStatus-" + $('#signalRId').text());
}).done(function () {
console.log('Now connected, connection ID=' + $.connection.hub.id);
}
).fail(function () { console.log('Could not Connect'); });

最佳答案

不完全确定您要的是什么,但这是我的想法 - 您的基本工具是......

  1. 检查有问题的条件

    if (messageHub) { 
    // set up client hub methods and start connection ...
    } else {
    // /signalr/hubs script didn't load properly, so skip setting up signalr
    }
  2. 使用 try/catch(针对可能会导致问题但不易预测的事情);阅读 jquery.signalR-* 以查看 SignalR 代码可能抛出哪些错误

  3. 使用 window.onerror 的全局错误处理程序( also see this SO post ):

    window.onerror = function(message, url, lineNumber) {
    console.log(message);
    };

关于javascript - 如何防止 signalR 错误停止进一步执行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21849511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com