【问题标题】:Invoking SignalR method after receiving message in javascript client在 javascript 客户端收到消息后调用 SignalR 方法
【发布时间】:2021-02-07 02:42:32
【问题描述】:

收到消息后,我正在尝试使用 javascript 调用 SignalR 集线器上的函数。我知道我在我的 javascript 客户端中收到我的消息,但调用不起作用。

这是我的 javascript 代码:

    connection.on("ReceiveResetCounter", function() => {

    connection.invoke("resetCounter");

});

这是我的中心方法:

public async Task resetCounter()
    {
        Counter = 0;
    }

有谁知道什么会导致这种情况发生?任何帮助表示赞赏。

编辑:

我这样调用 start (并且在那里使用的调用工作正常):

connection.start().then(
function ()
{
    connection.invoke("SomeOtherMethod").catch(
        function (err)
        {
            return console.error(err.toString());
        });
}).catch(
function (err)
{
    return console.error(err.toString());

});

【问题讨论】:

    标签: javascript .net-core signalr-hub asp.net-core-signalr


    【解决方案1】:

    我在我的 javascript 客户端中收到我的消息,但调用不起作用。

    根据您分享的代码,我使用 SignalR 集线器进行了测试,这对我来说效果很好。

    connection.on("ReceiveResetCounter", () => {
        connection.invoke("resetCounter");
    });
    

    测试结果

    若要解决此问题,请检查是否在 JavaScript 客户端使用 on 方法定义方法后调用 HubConnection 上的 start 方法。

    connection.on("ReceiveResetCounter", () => {
        connection.invoke("resetCounter");
    });
    
    connection.start().then(function () {
    
    //...
    

    此外,请尝试打开JavaScript client logging 并查看有关连接和活动的日志。

    【讨论】:

    • 感谢您的回答。我用开始连接的位置更新了我的代码,并将日志添加到了调用中。我看到连接已打开,调用时没有错误,但调用仍然不起作用
    • 你检查过connection.invoke("resetCounter");是否被执行了吗?如果您在该回调函数中调用另一个集线器方法,它是否工作正常?
    猜你喜欢
    • 2013-05-21
    • 1970-01-01
    • 2017-05-26
    • 2016-08-25
    • 2020-10-15
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2015-04-02
    相关资源
    最近更新 更多