Signalr core client - call server methode from Razor component

Viewed 48

How can I send a message to my server from, let's say a Razor component?

The situation: I have a working SignalR (Core) connection with my server.

My client code:

public class StartMySignalR
    {
        HubConnection connection;
        public async void StartSignalRHub()
        {
            connection = new HubConnectionBuilder()
                 .WithUrl(new Uri("https://myurl.my/LogOnHub"))
                 .WithAutomaticReconnect()
                 .Build();

                connection.On<string>("ReceiveMessage", (message) =>
                {
                  //Do some stuff
                  ii.InsertIntoLog("INFO", "SignalR ID = " + message);
                });
  
                //Start SignalR client
                await connection.StartAsync();

                //Send message to server (test connection).
                await connection.InvokeAsync("WelcomeMessage", connection.ConnectionId);
     

I send a test message to my server, that works fine. I can also send a message back from my server,.. so far so good. But now I want to do that from a Razor component in my OnInitializedAsync() Task. So when my page loads, the test message is sent to my server. There I am stuck. When I try to send the message from my Razor component I receive an error (System.NullReferenceExeption - Object reference not set to an instance of an object) -> connection was null error.

Can somebody put me in the right direction?

1 Answers

When I set the Hubconnection to static it works.

public static HubConnection connection;
Related