![]() |
VOOZH | about |
dotnet add package ControlR.Libraries.WebSocketRelay.Client --version 0.24.16
NuGet\Install-Package ControlR.Libraries.WebSocketRelay.Client -Version 0.24.16
<PackageReference Include="ControlR.Libraries.WebSocketRelay.Client" Version="0.24.16" />
<PackageVersion Include="ControlR.Libraries.WebSocketRelay.Client" Version="0.24.16" />Directory.Packages.props
<PackageReference Include="ControlR.Libraries.WebSocketRelay.Client" />Project file
paket add ControlR.Libraries.WebSocketRelay.Client --version 0.24.16
#r "nuget: ControlR.Libraries.WebSocketRelay.Client, 0.24.16"
#:package ControlR.Libraries.WebSocketRelay.Client@0.24.16
#addin nuget:?package=ControlR.Libraries.WebSocketRelay.Client&version=0.24.16Install as a Cake Addin
#tool nuget:?package=ControlR.Libraries.WebSocketRelay.Client&version=0.24.16Install as a Cake Tool
A client library for the WebSocket Relay service, providing managed relay stream connections for real-time data transfer in ControlR remote control applications.
using ControlR.Libraries.WebSocketRelay.Client;
using ControlR.Libraries.Shared.Services.Buffers;
using ControlR.Libraries.Api.Contracts.Dtos.RemoteControlDtos;
using Microsoft.Extensions.Logging;
// Create a concrete implementation or use in your application
public class MyRelayStream : ManagedRelayStream
{
public MyRelayStream(
TimeProvider timeProvider,
IMessenger messenger,
IMemoryProvider memoryProvider,
IWaiter waiter,
ILogger<ManagedRelayStream> logger)
: base(timeProvider, messenger, memoryProvider, waiter, logger)
{
}
}
// Connect to the relay
var relayStream = new MyRelayStream(
TimeProvider.System,
messenger,
memoryProvider,
waiter,
logger);
var relayUri = new Uri("wss://relay.example.com/relay");
await relayStream.Connect(relayUri, cancellationToken);
// Check connection status
Console.WriteLine($"Connected: {relayStream.IsConnected}");
Console.WriteLine($"State: {relayStream.State}");
Console.WriteLine($"Latency: {relayStream.CurrentLatency}");
// Create a DTO wrapper
var dtoWrapper = new DtoWrapper
{
DtoType = nameof(RemoteControlFrameDto),
Data = myFrameDto
};
// Send with cancellation support
await relayStream.Send(dtoWrapper, cancellationToken);
// Register a message handler
var subscription = relayStream.RegisterMessageHandler(this, async wrapper =>
{
switch (wrapper.DtoType)
{
case nameof(RemoteControlFrameDto):
var frame = MessagePackSerializer.Deserialize<RemoteControlFrameDto>(wrapper.Data);
await HandleFrame(frame);
break;
case nameof(InputEventDto):
var input = MessagePackSerializer.Deserialize<InputEventDto>(wrapper.Data);
await HandleInput(input);
break;
}
});
// Don't forget to dispose when done
subscription.Dispose();
// Get throughput metrics
double inboundMbps = relayStream.GetMbpsIn();
double outboundMbps = relayStream.GetMbpsOut();
Console.WriteLine($"In: {inboundMbps:F2} Mbps");
Console.WriteLine($"Out: {outboundMbps:F2} Mbps");
// Register a close handler
var closeSubscription = relayStream.OnClosed(async () =>
{
Console.WriteLine("Connection closed");
// Handle reconnection logic
});
// Dispose when done
closeSubscription.Dispose();
Use RelayUriBuilder to construct relay URIs:
var uri = RelayUriBuilder.Build(
relayServer: "relay.example.com",
deviceId: deviceId,
sessionId: sessionId,
role: RelayRole.Requester); // or RelayRole.Provider
The library consists of:
ManagedRelayStream.cs - Main stream management implementationRelayRole.cs - Enum for relay participant rolesRelayUriBuilder.cs - URI construction helper| Property | Type | Description |
|---|---|---|
IsConnected |
bool |
Whether the WebSocket is currently connected |
State |
WebSocketState |
The current WebSocket state |
CurrentLatency |
TimeSpan |
Current round-trip latency |
| Method | Description |
|---|---|
Connect() |
Establish WebSocket connection |
Send() |
Send a DTO wrapper message |
RegisterMessageHandler() |
Register handler for incoming messages |
OnClosed() |
Register handler for connection close events |
Close() |
Gracefully close the connection |
GetMbpsIn() |
Get inbound throughput |
GetMbpsOut() |
Get outbound throughput |
This library depends on:
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 1 NuGet packages that depend on ControlR.Libraries.WebSocketRelay.Client:
| Package | Downloads |
|---|---|
|
ControlR.Libraries.Viewer.Common
Common viewer utilities for ControlR, an open-source remote control and remote access solution. |
This package is not used by any popular GitHub repositories.