- Added SIGNALR.md (transport) and SIGNALR_DATASOURCE.md (collection) as layered, comprehensive documentation; retired SIGNALR_ARCHITECTURE.md - Updated all .md files and READMEs to reference new docs and clarify separation between transport and DataSource - Clarified CRUD tag structure (5 independent tags), single-method tag-based dispatch, and JSON-in-Binary tech debt - Added slot allocation and wire format clarifications to serialization docs - Improved documentation layering, conventions, and critical warnings for future maintainers |
||
|---|---|---|
| .. | ||
| AcBinaryHubProtocol.cs | ||
| AcSignalRClientBase.cs | ||
| AcSignalRTags.cs | ||
| IAcSignalRHubBase.cs | ||
| IAcSignalRHubClient.cs | ||
| README.md | ||
| SendToClientType.cs | ||
| SignalMessageTagAttribute.cs | ||
| SignalRCrudTags.cs | ||
| SignalRRequestModel.cs | ||
| SignalRSerializationHelper.cs | ||
README.md
SignalRs
Custom binary SignalR protocol, client infrastructure, message tagging, and serialization helpers.
Architecture: For full dispatch flow, tag system, and tech debt documentation see
docs/SIGNALR.md.
Key Files
Protocol
AcBinaryHubProtocol.cs— CustomIHubProtocolreplacing JSON+Base64 withAcBinarySerializer. Handles all 9 SignalR message types (Invocation, StreamItem, Completion, Ping, Close, etc.). InnerSpanReaderref struct for zero-alloc parsing.
Client
AcSignalRClientBase.cs— Abstract SignalR client managingHubConnection, request/response tracking via pooledSignalRRequestModel. Methods:SendMessageToServerAsync<TResponse>(), CRUD helpers (Post, Get, GetAll, GetAllInto). Configurable timeouts.IAcSignalRHubClient.cs— Client interface +SignalResponseDataMessage(sealed, supports JSON/Binary with GZip, caching, diagnostics).IAcSignalRHubBase.cs— Base hub interface:OnReceiveMessage(int messageTag, byte[] messageBytes, int? requestId).
Message Tagging
SignalMessageTagAttribute.cs— Three attributes:TagAttribute(base, int messageTag),SignalRAttribute(server method routing + client notification),SignalRSendToClientAttribute(client-side receive).AcSignalRTags.cs— Static constants:None,PingTag,EchoTag.SignalRCrudTags.cs— Sealed class bundling 5 independent CRUD tag integers.GetMessageTagByTrackingState()mapsTrackingState→ tag. Seedocs/SIGNALR_DATASOURCE.md.SendToClientType.cs— Enum: None, Others, Caller, All.
Serialization & Pooling
SignalRSerializationHelper.cs— Static helpers:SerializeToBinary(),DeserializeFromBinary(), compressed JSON variants,CreateResponseData().SignalRRequestModel.cs— Poolable (IResettable) request tracking model withObjectPoolfor reuse.