SignalR - 建立连接需要相当长的时间

2024-03-06

我刚刚开始使用 SignalR 进行实时更新。建立连接后我需要执行一些操作。所以我在 .done() 方法中编写了该代码。

我面临的问题是:建立连接需要一些时间,因此我无法执行我想要执行的操作。以下是我的 js 代码片段。

   $(function () {
   // Proxy created on the fly  
    projectHub = $.connection.projectHub;
    $.connection.hub.logging = true;
    // Start the connection
    $.connection.hub.start().done(function () {
    $("#lnkFollowProject").live("click", function () {
        console.log("Follow click");
        projectHub.server.followProject(projectId, currentLoggedInUserId);
     });
     $(".lnkUnfollowProject").live("click", function () {
        console.log("Unfollow click");
        projectHub.server.unfollowProject(projectId, currentLoggedInUserId);
      });     });     });

我不确定为什么建立连接需要时间。当我尝试使用简单的聊天应用程序时,它运行良好。我正在为该页面执行许多其他功能,并使用淘汰赛进行绑定。 (不适用于上述功能)。我也搜索过这个,发现防病毒软件可能是受害者。我也尝试禁用它,但没有收获。

我知道一种解决方案,我可以禁用按钮直到建立连接并在完成后启用它。但我不希望用户受到限制。

如果有任何其他可能的问题,请更新我。

提前致谢。


我对代码性能有两个建议。

1)使用.on()方法代替.live()

不再推荐使用 .live() 方法,因为更高版本的 jQuery 提供了 .delegate 和 .on 方法。 使用 .live() 会出现以下问题:

I) jQuery 在调用 .live() 方法之前尝试检索选择器指定的元素,这在大型文档上可能非常耗时。

II) 由于所有 .live() 事件都附加在文档元素上,因此事件在处理之前会采用最长且最慢的路径。

2) 将点击事件从.done()方法中取出,因为“followProject”和“unfollowProject”方法都需要点击事件来先老虎自己。

见下面的代码:

$(function () {
            // Proxy created on the fly  
            projectHub = $.connection.projectHub;
            $.connection.hub.logging = true;
            // Start the connection
            $.connection.hub.start();

            $(document.body).on("click","#lnkFollowProject", function () {
               console.log("Follow click");
               projectHub.server.followProject(projectId, currentLoggedInUserId);
           });
           $(document.body).on("click",".lnkUnfollowProject", function () {    
               console.log("Unfollow click");
               projectHub.server.unfollowProject(projectId, currentLoggedInUserId);
           });       
        });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SignalR - 建立连接需要相当长的时间 的相关文章

随机推荐