mirror of https://github.com/abpframework/abp.git
1 changed files with 71 additions and 0 deletions
@ -0,0 +1,71 @@ |
|||||
|
# Signalr Client results |
||||
|
|
||||
|
ASP.NET Core 7 supports [requesting a reuslt from a client](https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-7.0?view=aspnetcore-7.0#signalr), in this article will, we will show you how to use client results with the ABP framework. |
||||
|
|
||||
|
## Create a SignalR hub |
||||
|
|
||||
|
```csharp |
||||
|
public class ChatHub : AbpHub |
||||
|
{ |
||||
|
public async Task<string> WaitForMessage(string connectionId) |
||||
|
{ |
||||
|
var message = await Clients.Client(connectionId).InvokeAsync<string>("GetMessage"); |
||||
|
return message; |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
* ChatHub inherit from the `AbpHub` which have useful base properties like `CurrentUser`. |
||||
|
* Define `WaitForMessage` method to call the client's `GetMessage` method and get the return value. |
||||
|
|
||||
|
> Using `InvokeAsync` from a Hub method requires setting the [MaximumParallelInvocationsPerClient](https://learn.microsoft.com/en-us/aspnet/core/signalr/configuration?view=aspnetcore-7.0&tabs=dotnet#configure-server-options) option to a value greater than 1. |
||||
|
|
||||
|
## Client |
||||
|
|
||||
|
Clients should return results in their `.On(...)` handlers. |
||||
|
|
||||
|
### .NET Client |
||||
|
|
||||
|
```csharp |
||||
|
hubConnection.On("GetMessage", async () => |
||||
|
{ |
||||
|
Console.WriteLine("Enter message:"); |
||||
|
var message = await Console.In.ReadLineAsync(); |
||||
|
return message; |
||||
|
}); |
||||
|
``` |
||||
|
|
||||
|
### JavaScript client |
||||
|
|
||||
|
```js |
||||
|
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>`: |
||||
|
|
||||
|
```csharp |
||||
|
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; |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
## See also: |
||||
|
|
||||
|
* [ABP SignalR-Integration documentation](https://docs.abp.io/en/abp/latest/SignalR-Integration) |
||||
|
* [Microsoft client-results documentation](https://learn.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-7.0#client-results) |
||||
Loading…
Reference in new issue