MVC SignalR集线器连接更新问题

问题描述 投票:0回答:1

我正在一个网站上统计在线用户总数。我知道有人分配也有同样的问题。但是我再次询问是因为如果要进行更新,现在需要做一些不同的事情,因为我在教程中看到signalr-2.1.0和signalr-2.2.0,而我现在使用的JavaScript是2.4.1。

我一直在研究如何正确实现SignalR,但仍然没有找到明确的解决方案。我的问题是JQuery代码不想响应mywebsitehub。不知道为什么。这是我的代码:

JQuery:

<script type="text/javascript" src="~/Scripts/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="~/Scripts/jquery.signalR-2.4.1.min.js"></script>
<script src="signalr/hubs"></script>
<script type="text/javascript">
$(function () {
    var counterHub = $.connection.mywebsitehub;

    $.connection.hub.start().done(function () {

    });

    counterHub.client.updatecounter = function (count) {
        $("#counter").text(count);
    }
});
</script>

我在C#中的中心:

public class MyWebsiteHub : Hub
{
    static long Counter = 0;

    public override Task OnConnected()
    {
        Counter++;
        base.OnConnected();
        this.Clients.All.Update(Counter);
        return Task.CompletedTask;
    }

    public override Task OnDisconnected(bool stopCalled)
    {
        Counter--;
        base.OnDisconnected(stopCalled);
        this.Clients.All.Update(Counter);
        return Task.CompletedTask;
    }
}

而且我的startup.cs中也有。

app.MapSignalR(“ / signalr”,新的HubConfiguration());

我不确定中心类的位置是否重要,因此将其放在:

〜/ Classes / MyWebsiteHub.cs

我收到的错误消息:

Uncaught TypeError: Cannot read property 'mywebsitehub' of undefined
    at HTMLDocument.<anonymous> ((index):100)
    at e (jquery-3.4.1.min.js:2)
    at t (jquery-3.4.1.min.js:2)

所以,可能是什么原因? SignalR更新?我的Hub类位置?也许“〜/ signalr / hubs”的路径不正确?

[伙计们,我不得不重新发布此问题并删除我的上一个问题,因为没有人回答并很快就死掉了。因此,请让我知道如何解决该代码问题。

c# jquery asp.net-mvc signalr signalr-hub
1个回答
0
投票

不知道SignalR是否符合惯例,但在我的情况下,我将Hub类放在名为“ Hubs”的文件夹中,并且该文件夹正在运行。它可以是SignalR的一种模式,尝试将Hub类“ MyWebsiteHub”放在文件夹“ Hubs”中。同样,类Hub的方法也必须是静态的。

在Hub类的示例下面

public class CommandeHub : Hub
{
 [HubMethodName("updateCommandes")]
 public static void UpdateCommandes()
 {
    IHubContext context = GlobalHost.ConnectionManager.GetHubContext<CommandeHub>();
    context.Clients.All.updateClientCommandes();
 }

}

公司

© www.soinside.com 2019 - 2024. All rights reserved.