gpt4 book ai didi

javascript - Hub 方法在 hub 类外部不起作用

转载 作者:行者123 更新时间:2023-11-28 04:54:31 30 4
gpt4 key购买 nike

这是 Controller 方法,它接收应该被踢出的userName

   public ActionResult Kick(string userName)
{
var hub = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
var user = userService.GetUserByName(userName);
hub.Clients.Client(user.ConnectionIdInHub).kickUser();
return Json(new { success = true});
}

kickUser() - 这是一个 JS 方法。但是,当从 Controller 方法 Kick() 执行 kickUser() 时,客户端没有任何反应。

 chatHub.client.kickUser = function () {
window.location.replace(window.kickUserActionUrl);
}

我应该怎么做才能解决这个问题?

我尝试这样做:

public static void OnKicked(string connectionId)
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
hubContext.Clients.Client(connectionId).closeConnection();
}

我像这样调用集线器方法 ChatHub.OnKicked(user.ConnectionIdInHub);但还是不行

这是另一种解决方法:

我正在调用客户端 setInterval() 方法,该方法每十秒向服务器发送一次请求。 Json 方法通过在服务器上接收此请求来检查一件事:当前用户是否为 IsKicked=true,在这种情况下,JSon 将发送回 new {success=true} 并用户将在踢页面上重新连接。

最佳答案

这帮助我从 hub 类外部执行 hub 方法。您可以直接从客户端调用 hub 方法,如下所示:

var myHub = $.coonection.hubName;
myHub.server.myMethod; //name of the method should begin with a small letter

关于javascript - Hub 方法在 hub 类外部不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42646068/

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