gpt4 book ai didi

asp.net-mvc - SignalR - 建立连接需要很长时间

转载 作者:行者123 更新时间:2023-12-04 16:50:00 25 4
gpt4 key购买 nike

我刚刚开始使用 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);
}); }); });

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

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

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

提前致谢。

最佳答案

我有两个关于代码性能的建议。

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);
});
});

关于asp.net-mvc - SignalR - 建立连接需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20190568/

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