【问题标题】:Why is my function not being called on the SignalR hub为什么我的函数没有在 SignalR 集线器上被调用
【发布时间】:2020-12-09 15:02:16
【问题描述】:

我现在正在通过简单的聊天试验 SignalR。如果 user1 从 Context.ConnectionId 提供 user2 的 userId,我正在尝试向 user2 发送消息。我的客户端代码:

const sendMessage = async (user, message) => {
    const chatMessage = {
        user: "generic user",
        message: message
    };

    if (connection.connectionStarted) {
        try {
            console.log("user: " + user);
            console.log("message: " + message);
            console.log("message sent");
            await connection.send('SendMessage',user, chatMessage);
        }
        catch(e) {
            console.log(e);
        }
    }
    else {
        alert('No connection to server yet.');
    }
}

当我从客户端发送消息时,我会收到正确的 console.logs,这让我相信我的客户端代码没问题。但是,我的 Hub 服务器没有收到我的消息。

    public async Task SendMessage(string user, ChatMessage message)
    {
        Console.WriteLine("Received user:" + user);
        await Clients.Group(user).ReceiveMessage(message);
    }

我从来没有在我的控制台中找到用户。但我不知道为什么我从来没有收到过消息。

【问题讨论】:

  • my Hub server is not receiving my message如果你调试hub server的代码,在client调用hub方法SendMessage时是否会触发它?

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


【解决方案1】:

如果您使用Context.ConnectionId 作为“用户”值,那么您应该使用Clients.Client(user).ReceiveMessage(message);

Clients.Group(...) 采用您已将客户端添加到 Groups.AddToGroupAsync(Context.ConnectionId, groupName); 的组名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2017-02-17
    相关资源
    最近更新 更多