【问题标题】:$.connections can not read the hub of undefined (SignalR)$.connections 无法读取未定义的集线器(SignalR)
【发布时间】:2015-12-05 10:43:38
【问题描述】:

我将尝试使用 SignalR 2 将数据发送到服务器。但我收到此错误:

未捕获的类型错误:无法读取未定义的属性“meldingenHub”

这是服务器上的 C# 代码:

public class MeldingenHub : Hub
{
    public void Meld(string blogitem, string verdiendePunten)
    {
        Clients.All.BroadcastMessage(blogitem, verdiendePunten);
    }
}

这里我包含了所有需要的文件:

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.signalR-2.1.2.min.js"></script>
<script src="~/signalr/hubs"></script>

这是在粗体代码上给出错误的客户端代码。

var medlingenHub = $.connection.meldingenHub;

medlingenHub.client.broadcastMessage = function (blogitem, verdiendePunten) {
    $("#verdiendepunten").html(verdiendePunten);
};

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

    变种 JSON = {
        ID: parseInt(this.dataset.id),
        类型:this.dataset.type,
        GebruikerID: "@(Model.DeBlog.Gebruiker.Id)",
        Punten: parseInt(this.dataset.punten),
        GestemdeGebruikerID: "@(Model.AangemeldeGebruiker)"
    };

    $.ajax({
        url: "../api/Stem/Toevoegen?apiKey=@Model.ApiKey",
        类型:“PUT”,
        数据:json,
        成功:函数(returnData){

            如果(returnData.Oke == false){

                卡通错误(返回数据)
            }
            别的 {

                plaatsKleuren(returnData);
                medlingenHub.server.meld(data.ID, data.Punten);
            }
        }
    });
});

请注意上面的代码:当我点击一个按钮时代码会执行。

我还在Startup.Auth.cs 文件中添加了这一行:

public void ConfigureAuth(IAppBuilder app)
{
    app.MapSignalR();
    // other code
}

我遵循asp.net 上的教程。谁能帮帮我?

【问题讨论】:

  • 您是否为您的集线器尝试过[HubName("meldingenHub")]
  • @SirwanAfifi 除非您希望集线器名称与类不同,否则不应使用 HubName 属性。众所周知,这会导致一些问题,包括弄乱signalr/hubs.js 文件。
  • 你有没有检查过打开页面时客户端没有错误?检查客户端网络跟踪中的 404 错误(F12 打开 Chrome、Firefox 或 IE 上的开发工具)。使用开发工具中的控制台查看是否定义了 $.connection 以及是否定义了集线器成员。

标签: c# jquery asp.net-mvc signalr


【解决方案1】:

我找到了。我正在使用错误的$.connection 范围。这是我制作的完整代码:

var punten = document.getElementsByClassName("punten-do-ajax");
var aantal = punten.length;

var conn = $.connection;

for (var i = 0; i < aantal; i++) {

    punten[i].addEventListener("click", function () {

        @if (Model.DeBlog.StemmenToegelaten)
        {
            <text>
            votes(conn, this);
            </text>
        }
    });
}

function votes(conn, sender) {
    var medlingenHub = conn.meldingenHub;

    medlingenHub.client.broadcastMessage = function (blogitem, verdiendePunten) {
        $("#verdiendepunten").html(verdiendePunten);
    };

    conn.hub.start().done(function () {

        var json = {
            ID: parseInt(sender.dataset.id),
            Type: sender.dataset.type,
            GebruikerID: "@(Model.DeBlog.Gebruiker.Id)",
            Punten: parseInt(sender.dataset.punten),
            GestemdeGebruikerID: "@(Model.AangemeldeGebruiker)"
        };

        $.ajax({
            url: "../api/Stem/Toevoegen?apiKey=@Model.ApiKey",
            type: "PUT",
            data: json,
            success: function (returnData) {

                if (returnData.Oke == false) {

                    toonError(returnData)
                }
                else {

                    plaatsKleuren(returnData);
                    medlingenHub.server.meld(returnData.ID, returnData.Punten);
                }
            }
        });
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多