【问题标题】:How to listen to all callbacks from the server to client in SignalR?如何在 SignalR 中监听从服务器到客户端的所有回调?
【发布时间】:2021-04-07 08:59:10
【问题描述】:

要在 SignalR (JavaScript) 中为特定方法注册回调,您可以执行以下操作:

hubConnection.on("MyMethod", (...) => { ... });

但是,是否可以监听所有方法并获取所有参数?

【问题讨论】:

  • 请检查this tutorial:JavaScript 客户端通过 HubConnection 的 invoke 方法调用集线器上的公共方法。并且,要从集线器接收消息,请使用 HubConnection 的on 方法定义一个方法。 SignalR 通过匹配SendAsyncconnection.on 中定义的方法名称和参数来确定调用哪个客户端方法。

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


【解决方案1】:

我不这么认为,因为您必须在开始连接之前注册所有回调。文档中的这个示例显示了这一点。

"use strict";

var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();

//Disable send button until connection is established
document.getElementById("sendButton").disabled = true;

connection.on("ReceiveMessage", function (user, message) {
    var msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
    var encodedMsg = user + " says " + msg;
    var li = document.createElement("li");
    li.textContent = encodedMsg;
    document.getElementById("messagesList").appendChild(li);
});

connection.start().then(function () {
    document.getElementById("sendButton").disabled = false;
}).catch(function (err) {
    return console.error(err.toString());
});

document.getElementById("sendButton").addEventListener("click", function (event) {
    var user = document.getElementById("userInput").value;
    var message = document.getElementById("messageInput").value;
    connection.invoke("SendMessage", user, message).catch(function (err) {
        return console.error(err.toString());
    });
    event.preventDefault();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多