Signalr Client results
ASP.NET Core 7 supports requesting a result from a client, in this article, we will show you how to use client results with the ABP framework.
Create a SignalR hub
public class ChatHub : AbpHub
{
public async Task<string> WaitForMessage(string connectionId)
{
var message = await Clients.Client(connectionId).InvokeAsync<string>("GetMessage");
return message;
}
}
- ChatHub inherits from
AbpHub
that has useful base properties likeCurrentUser
. - Define the
WaitForMessage
method to call the client'sGetMessage
method and get the return value.
Using
InvokeAsync
from a Hub method requires setting the MaximumParallelInvocationsPerClient option to a value greater than 1.
Client
Clients should return results in their .On(...)
handlers.
.NET Client
hubConnection.On("GetMessage", async () =>
{
Console.WriteLine("Enter message:");
var message = await Console.In.ReadLineAsync();
return message;
});
JavaScript client
connection.on("GetMessage", function () {
const message = prompt("Enter message:");
return message;
});
Strongly-typed hubs
We can use strongly-typed instead of InvokeAsync
by inheriting from AbpHub<T>
or Hub<T>
:
public interface IClient
{
Task<string> GetMessage();
}
public class ChatHub : AbpHub<IClient>
{
public async Task<string> WaitForMessage(string connectionId)
{
string message = await Clients.Client(connectionId).GetMessage();
return message;
}
}
Comments
No one has commented yet, be the first to comment!