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

标签 javascript jquery asp.net asp.net-mvc signalr

这是 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/

相关文章:

javascript - 影响图像数量的Jquery选择

c# - 为 ASP.net WebAPI 自动生成文档

javascript - 从带有字符串的关联数组中获取值

javascript - 每天更换背景

javascript - 多维javascript数组中的直系后代

当国家/地区已保存时jquery国家/地区选择?

javascript - 如何通过 javascript 访问 JSON 数据

javascript - Dropzone JS 不是部分 View 中的函数错误

c# - 带有 Crystal Report 的 .Net 应用程序无法在共享主机中运行

javascript - 如何在 django 模板中设置变量(使用 set 标签)?