Lakona.Rpc.Client
0.12.20
dotnet add package Lakona.Rpc.Client --version 0.12.20
NuGet\Install-Package Lakona.Rpc.Client -Version 0.12.20
<PackageReference Include="Lakona.Rpc.Client" Version="0.12.20" />
<PackageVersion Include="Lakona.Rpc.Client" Version="0.12.20" />
<PackageReference Include="Lakona.Rpc.Client" />
paket add Lakona.Rpc.Client --version 0.12.20
#r "nuget: Lakona.Rpc.Client, 0.12.20"
#:package Lakona.Rpc.Client@0.12.20
#addin nuget:?package=Lakona.Rpc.Client&version=0.12.20
#tool nuget:?package=Lakona.Rpc.Client&version=0.12.20
Lakona.Rpc.Client
Client runtime implementation for Lakona.Rpc.
Install
dotnet add package Lakona.Rpc.Client
Documentation
Design boundary: https://bruce48x.github.io/Lakona/concepts/design-boundary/
Dependencies
Lakona.Rpc.Core
Lakona.Rpc.Client has no hard dependency on concrete serializer or transport implementations.
Includes
RpcClientOptionsRpcClientRuntime- notification diagnostics through
UnhandledNotificationReceivedandNotificationHandlerException
Recommended Entry
Lakona.Rpc.Client provides the transport-agnostic runtime building blocks.
The user-facing RpcClient type is generated by Lakona.Rpc.Analyzers for each contract set.
Typical usage looks like this:
using Client.Generated;
var options = new RpcClientOptions(transport, serializer)
{
KeepAlive = new RpcKeepAliveOptions
{
Enabled = true,
Interval = TimeSpan.FromSeconds(15),
Timeout = TimeSpan.FromSeconds(45)
}
};
await using var client = new RpcClient(options);
await client.ConnectAsync(ct);
RpcClient.Api is generated per contract set and exposes grouped service clients after the connection is configured.
RpcClientRuntime and the generated RpcClient are single-use connection objects. After disconnecting or disposing, create a new transport, options object, and generated client for reconnect.
Logging
Set RpcClientOptions.LoggerFactory to an application-owned factory when RPC
logging is required. The runtime depends only on logging abstractions and uses
a null logger when no factory is supplied. Provider setup and lifetime guidance
are defined in
Logging.
Server Notifications
Generated notification binders register one handler per notification method. Duplicate registration fails fast because notifications model a contract implementation, not a general event subscription list.
RpcClientRuntime accepts asynchronous notification handlers through Func<T, ValueTask>. Synchronous handlers can still use the convenience overload.
Notification handler exceptions do not disconnect the transport. Observe them through NotificationHandlerException. Server notification frames without a registered handler are reported through UnhandledNotificationReceived.
KeepAlive
RpcClientOptions.KeepAlive enables connection-level idle ping / pong and timeout detection.
- The client sends ping only when the connection is idle.
- Any inbound frame counts as activity and clears the pending timeout window.
RpcClientRuntimeexposesLastSendAt,LastReceiveAt,LastRtt, andTimedOutByKeepAlivefor diagnostics.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Lakona.Rpc.Core (>= 0.13.13)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- System.Threading.Channels (>= 8.0.0)
-
net10.0
- Lakona.Rpc.Core (>= 0.13.13)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Lakona.Rpc.Client:
| Package | Downloads |
|---|---|
|
Lakona.Game.Server
Server-side actor, Hotfix, fixed cluster RPC, client RPC and HTTP hosting, session lifecycle, and reliable push infrastructure for Lakona.Game applications. |
|
|
Lakona.Game.Client
Engine-neutral client helpers for Lakona.Game applications, including reliable push sequence tracking. |
GitHub repositories
This package is not used by any popular GitHub repositories.