【问题标题】:SignalR GetHubContext method not firing hub methodSignalR GetHubContext 方法未触发集线器方法
【发布时间】:2015-01-07 09:27:53
【问题描述】:

我正在尝试从同一解决方案中的另一个项目在一个项目中运行 signalR 集线器方法。两个项目都运行在同一个 Web 前端。

调用以下代码时,代码在集线器中运行,直到由于未使用 IHubContext 对象而出现预期错误。

presentation.ChatHub ch = new ChatHub();
ch.Send(message, "", "");

发生这种情况时,我将代码更改为以下内容,但是集线器内的代码不再运行。

IHubContext context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
context.Clients.All.Send(message, "", "");

hub代码调用如下:

public class ChatHub : Hub
{
    public int Send(string message, string fName, string IName)
    {
    //Code Goes here.
    }

我读过的所有内容,包括这里的其他答案似乎都指向获取 IhubContext 然后调用 clients.all 应该可以工作,但我不知道为什么它不工作

编辑:我已经更改了我的代码,以便在运行之前在数据库中创建一个帖子,并对其进行更改,以便它运行与 javascript 接收端匹配的“broadcastMessage”函数。但这仍然无法正确连接,并且没有命中 javascript 函数。

   IHubContext context = GlobalHost.ConnectionManager.GetHubContext("chatHub");
   context.Clients.All.broadcastMessage(message, pid, userName, FirstName, count, "", "", nDate);

【问题讨论】:

    标签: c# asp.net signalr


    【解决方案1】:

    我不是 100% 对此,但根据我对以下页面的理解:ASP.Net SignalR Hubs API 也就是说,当您从集线器外部调用一个方法时,您并没有调用您在集线器上定义的方法,而是告诉集线器在所有连接的客户端上激活 jquery。

    这就是您没有看到您的中心方法激活的原因。

    【讨论】:

    • 好的,我更改了我的代码以创建帖子,然后更改了集线器代码,使其与我的 javascript 匹配。并且两者仍然没有连接。我现在就更新我的帖子,有什么想法吗?
    • 我提供的链接是我遇到同样问题时用来帮助我的。让它工作需要一段时间,但我开始在我的网站中有两个页面,一个用于手动测试标准集线器并确保它正常工作。然后是我使用控制器操作的实际主页。确保您的 jquery 方法名称相同,并且在您的 hub 方法和您的操作方法中是相同的,因为 jquery 区分大小写。
    • 是的,我已经阅读了它,我的代码似乎与它所说的一致,我将继续调查,感谢您的帮助
    • 祝你好运,也许其他人能够为你阐明这一点。哦,请确保您的页面包含 ~SignalR/Hubs jquery 参考。我在一页上忘记了这一点,花了很长时间才找出它为什么不起作用:-)
    • 是的,该页面已经有 signalR 为新闻源工作。我的目标是,每当上传项目时,新闻源都会自动更新。我在服务器端这样做。所以信号器参考已经在工作了。具有相同的功能,具有相同的名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多