Fuaran.UI.ServerDriven.WebSocket
0.31.0
Prefix Reserved
See the version list below for details.
dotnet add package Fuaran.UI.ServerDriven.WebSocket --version 0.31.0
NuGet\Install-Package Fuaran.UI.ServerDriven.WebSocket -Version 0.31.0
<PackageReference Include="Fuaran.UI.ServerDriven.WebSocket" Version="0.31.0" />
<PackageVersion Include="Fuaran.UI.ServerDriven.WebSocket" Version="0.31.0" />
<PackageReference Include="Fuaran.UI.ServerDriven.WebSocket" />
paket add Fuaran.UI.ServerDriven.WebSocket --version 0.31.0
#r "nuget: Fuaran.UI.ServerDriven.WebSocket, 0.31.0"
#:package Fuaran.UI.ServerDriven.WebSocket@0.31.0
#addin nuget:?package=Fuaran.UI.ServerDriven.WebSocket&version=0.31.0
#tool nuget:?package=Fuaran.UI.ServerDriven.WebSocket&version=0.31.0
Fuaran.UI.ServerDriven.WebSocket
Backend 2 for Fuaran.UI.ServerDriven — one bidirectional WebSocket
channel over ASP.NET. The lower-latency transport for measured high-frequency
interaction (per-keystroke, drag, pointer-move, live cursors).
This is a first-class second backend, not a placeholder. Its value is twofold:
the latency win above, and — structurally — it differs from the SSE+POST backend
only in its channel + endpoint glue (WsChannel mirrors SseChannel; the
driver / diff / lowering core is untouched). That structural identity is the
architectural-integrity check that IFuaranLiveChannel is genuinely
transport-neutral and not accidentally SSE-shaped.
Wiring
open Fuaran.UI.ServerDriven.Driver
open Fuaran.UI.ServerDriven.WebSocket.Endpoints
app.UseWebSockets() |> ignore // required
let makeSession () =
Driver.init (DriverServices.create renderFragment) update view initialModel
mapFuaranLiveWebSocket app (defaultWsConfig makeSession)
GET /live/ws upgrades to a WebSocket; the same socket carries outbound frames
(FrameWire.encodeJson — raw JSON, no SSE id:/event: framing) and inbound
events (parsed → LiveConnection.Handle → G1 → driver → frames back). The
client uses the shim's WebSocket transport adapter (a Track-B drop-in — only the
connect/send adapter changes; the patch/effect/delegation core is identical).
SSE+POST vs WebSocket
Default to SSE+POST (Fuaran.UI.ServerDriven.AspNetCore): it traverses infra
natively, gets per-event HTTP governance for free, and reconnects via
Last-Event-ID. Reach for WebSocket when a measured interaction pattern
needs the lower per-message latency. The IFuaranLiveChannel seam makes that a
swap, not a rewrite. WS owns its own reconnect + resequencing client-side (no
EventSource freebie); the server half is Frame.Seq + LiveConnection.Resync.
See fuaran-dotnet/docs/SERVER_DRIVEN.md.
No platform-SDK dependency. Apache-2.0 licensed — see the repo LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net10.0
- Fable.Core (>= 5.0.0)
- FSharp.Core (>= 10.1.300)
- Fuaran.Core.Column (>= 0.11.0)
- Fuaran.Core.DataFrame (>= 0.11.0)
- Fuaran.Core.Function (>= 0.11.0)
- Fuaran.Core.Ops (>= 0.11.0)
- Fuaran.Core.OpStream (>= 0.11.0)
- Fuaran.Core.Tree (>= 0.11.0)
- Fuaran.Core.Validator (>= 0.11.0)
- Fuaran.Core.Wire (>= 0.11.0)
- Fuaran.UI.ServerDriven (>= 0.31.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.46.0 | 29 | 8/28/2026 |
| 0.39.0 | 57 | 8/27/2026 |
| 0.35.0 | 83 | 8/24/2026 |
| 0.32.0 | 79 | 8/23/2026 |
| 0.31.0 | 89 | 8/21/2026 |
| 0.30.0 | 88 | 8/21/2026 |
| 0.29.0 | 91 | 8/19/2026 |
| 0.28.0 | 84 | 8/18/2026 |
| 0.27.0 | 86 | 8/18/2026 |
| 0.26.0 | 98 | 8/18/2026 |
| 0.18.0 | 94 | 8/10/2026 |
| 0.15.0 | 88 | 8/9/2026 |
| 0.12.0 | 102 | 7/31/2026 |
| 0.11.0 | 99 | 7/30/2026 |
| 0.10.0 | 101 | 7/29/2026 |
| 0.6.0 | 100 | 7/27/2026 |
| 0.4.0 | 101 | 7/26/2026 |
| 0.3.0 | 112 | 7/24/2026 |