Tổng quan SDK
Trên trang này
Namespaces: Nalix.SDK, Nalix.SDK.Transport, Nalix.SDK.Transport.Extensions, Nalix.SDK.Extensions, Nalix.SDK.Options
Assembly: Nalix.SDK
Nalix.SDK là gói transport và giao thức phía client của Nalix. Nó cung cấp các phiên client cụ thể (TcpSession, UdpSession, WebSocketSession), một contract phiên trừu tượng/interface (TransportSession / ITransportSession), handshake X25519 với TOFU/ghim khóa và giải Proof-of-Work, tiếp tục phiên 0-RTT, xoay khóa HKDF (RekeyAsync), các helper yêu cầu/phản hồi có ghép cặp (RequestAsync / TryRequestAsync), streaming (StreamAsync / RequestWithStreamAsync), và các RPC client proxy được sinh từ mã nguồn (CreateRpcClient<T>).
Ánh xạ mã nguồn
src/Nalix.SDK/Transport/(ITransportSession.cs,TransportSession.cs,SessionState.cs,TcpSession.cs,UdpSession.cs,WebSocketSession.cs)src/Nalix.SDK/Transport/Extensions/(HandshakeExtensions.cs,ResumeExtensions.cs,CipherExtensions.cs,RekeyExtensions.cs,RequestExtensions.cs,StreamExtensions.cs,HeaderStreamExtensions.cs,ChannelExtensions.cs,ObservableExtensions.cs,RpcExtensions.cs,PingExtensions.cs,DisconnectExtensions.cs,TimeSyncExtensions.cs,ControlExtensions.cs,TransportSessionSubscriptions.cs)src/Nalix.SDK/Extensions/(ProtocolStringExtensions.cs,SubscriptionExtensions.cs)src/Nalix.SDK/Options/(TransportOptions.cs,WebSocketTransportOptions.cs,RequestOptions.cs,RequestOutcome.cs)src/Nalix.SDK/IThreadDispatcher.cs,src/Nalix.SDK/InlineDispatcher.cs,src/Nalix.SDK/TimeSyncCalculator.cs
Kiến trúc client
flowchart TD
subgraph App["Client Application"]
Req["RequestAsync / TryRequestAsync / CreateRpcClient<T>"]
Stream["StreamAsync / RequestWithStreamAsync / SubscribeChannel"]
Sub["On<TPacket> / AsObservable<TPacket>"]
end
subgraph Session["ITransportSession / TransportSession"]
State["SessionState (Secret, SessionToken, EncryptionEnabled, LocalPort)"]
Sup["ReconnectSupervisor + KeepAlive Monitor"]
TCP["TcpSession"]
UDP["UdpSession"]
WS["WebSocketSession"]
end
subgraph Framers["Internal Framers + FramePipeline"]
TF["TcpFrameSender / TcpFrameReader"]
UF["UdpFrameSender / UdpFrameReader"]
WF["WsFrameSender / WsFrameReader"]
end
App --> Session
TCP --> TF
UDP --> UF
WS --> WFBản đồ tham chiếu API
Phiên transport
- Transport Session (ITransportSession & TransportSession): Contract cơ sở,
SessionState,ReconnectSupervisor, dò keepalive và điều phối trực tiếp các yêu cầu đang chờ. - TCP Session (TcpSession): Client stream tin cậy có khung với
ConnectWithProxyAsyncvàSendđồng bộ. - UDP Session (UdpSession): Client datagram có xác thực (
[8B SessionToken][Payload][4B XxHash32 MAC]) với việc ghim cổng TCP đi kèm. - WebSocket Session (WebSocketSession): Client WebSocket binary
ws://vàwss://(tương thích với desktop và Blazor WASM). - Frame Reader và Sender: Khung TCP, UDP và WebSocket nội bộ, phân mảnh và theo dõi sequence.
Mở rộng bảo mật, điều khiển & yêu cầu
- Tổng quan Session Extensions: Hướng dẫn đầy đủ về
RequestExtensions,StreamExtensions,HeaderStreamExtensions,ChannelExtensions,ObservableExtensions,RpcExtensionsvàRekeyExtensions. - Handshake Extensions (HandshakeAsync): Handshake X25519 ECDH có xác thực, khám phá khóa TOFU và tự động giải thử thách Proof-of-Work.
- Resume Extensions (ResumeSessionAsync & ConnectWithResumeAsync): Tiếp tục phiên 0-RTT với chứng minh sở hữu
HmacKeccak256và tự động quay lại handshake khi cần. - Cipher Extensions (UpdateCipherAsync & RekeyAsync): Chuyển bộ mật mã trực tiếp và xoay khóa HKDF giữa phiên.
- Tiện ích điều khiển (PingAsync, DisconnectGracefullyAsync, SyncTimeAsync): Đo RTT, báo ngắt kết nối êm thấm và đồng bộ đồng hồ bằng EMA.
- Subscriptions (On<TPacket>, CompositeSubscription): Đăng ký gói tin có kiểu rõ ràng.
Tiện ích & tùy chọn
- Thread Dispatching (IThreadDispatcher, InlineDispatcher): Chuyển luồng về main thread/UI cho Unity, MAUI, WPF và Godot.
- Protocol String Extensions (ToDisplayString): Mô tả dễ đọc cho
ProtocolReasonvàProtocolAdvicetrên giao diện. - Chẩn đoán phiên: Các mẫu quan sát vòng đời và lỗi phía client.
- Transport Options
- WebSocket Transport Options
- Request Options & RequestOutcome<T>
Ví dụ bắt đầu nhanh
using Nalix.SDK.Options;
using Nalix.SDK.Transport;
using Nalix.SDK.Transport.Extensions;
TransportOptions options = new()
{
Address = "127.0.0.1",
Port = 57206,
AutoReconnectEnabled = true,
KeepAliveIntervalMillis = 15_000
};
using TcpSession client = new(options);
// 1. Kết nối và thực hiện handshake X25519 có xác thực
await client.ConnectAsync();
await client.HandshakeAsync();
// 2. Gửi một yêu cầu có ghép cặp và chờ phản hồi
LoginResponse reply = await client.RequestAsync<LoginResponse>(
new LoginRequest { Username = "Alice" },
RequestOptions.Default.WithTimeout(3_000).WithEncrypt());
// 3. Ngắt kết nối một cách êm thấm
await client.DisconnectGracefullyAsync();