AyCode.Core/AyCode.Services/docs/SIGNALR_BINARY_PROTOCOL_ISS...

2.1 KiB

Binary Hub Protocol (wire) — Known Issues

For planned/actionable work see SIGNALR_BINARY_PROTOCOL_TODO.md. For higher-level SignalR abstractions see SIGNALR_ISSUES.md.

ISSUE-01: AsyncSegment send-path unsupported on WebAssembly

Severity: Major (on WASM) · Status: Workaround-in-place · Area: AsyncPipeWriterOutput / WASM runtime

Description

AsyncPipeWriterOutput.SyncAwaitFlush uses Task.Wait(timeout) — deadlocks the single-threaded WASM UI thread. Therefore, WASM clients cannot SEND with AsyncSegment mode.

Known workaround (multi-layer)

  1. AcBinaryHubProtocolOptions.Validate() throws PlatformNotSupportedException if WASM + AsyncSegment combination is requested → prevents deadlock
  2. Consumer code-level safety-net downgrades AsyncSegment → Segment on WASM (see FruitBankHybrid.Web.Client/Program.cs Configure lambda)
  3. Receive-path on WASM is fully supported — SegmentBufferReaderInput with synchronous fallback at CHUNK_END means WASM clients CAN receive AsyncSegment-chunked data from a non-WASM sender, they just cannot send AsyncSegment themselves

None — architectural constraint of browser WASM threading model.

ISSUE-02: StaticWebAssets SDK "Illegal characters" noise (consumer build)

Severity: Cosmetic (non-blocking) · Status: Upstream SDK limitation · Area: SDK, not our code

Description

Consumer projects using Microsoft.NET.Sdk.BlazorWebAssembly may see "Illegal characters in path" errors in the VS design-time error list. Originates from the SDK's DefineStaticWebAssets task calling legacy FileIOPermission.EmulateFileIOPermissionChecks, which is stricter than NTFS (e.g., double spaces or certain path patterns in any wwwroot asset trigger it).

Build succeeds, app runs — the "error" is error-list-only.

Known workaround

Ignore the error-list entry. If it becomes truly blocking, inspect wwwroot (including transitive from RCL projects) for problematic filenames (double spaces, control chars, reserved chars).

None — upstream SDK fix required.