C#C
C#4y ago
PontiacGTX

Signalr not sending message(s) to specific user(s)

in the hub i have setup this signature for a method
public async Task SendMessage(string sender, string receiver, string message)
{
      await Clients.Users(sender, receiver).SendAsync("ReceiveMessage", receiver, message);
 }

and in the client side(the page on blazor server) i have set this up for the ReceiveMessage method


public async Task OnInitializeAsync()
{

 if(hub is null)
            hub = new HubConnectionBuilder()
                .WithUrl(_NavigationManager.ToAbsoluteUri("/ConnectionsHub"))
                .Build();
    hub.On<string, string>($"ReceiveMessage",  // this is never triggered
        async (sender, message) =>
        {
            var encodedMsg = $"{sender}: {message}";
            ChatBox.MessageList.Add(encodedMsg);
            await ChatBox.ComponentStateHasChanged();
        });
        hub.ServerTimeout = TimeSpan.FromMilliseconds(100000);
        await hub.StartAsync();
}
and how I call this method
private async Task SendMessage(string message)
    {
        if(string.IsNullOrEmpty(message))
        {
            await PrintMessage("Error", "Cannot send an empty message");
            return;
        }
        if (hub is not null)
        {

            foreach (var user in _UserList)
            {
                await hub.SendAsync("SendMessage", ThisUser.Email, user.User.Email,ChatBox.Message);
            }

          // await  ChatBox.ComponentStateHasChanged();
        }
    }
Was this page helpful?