Skip to main content

Real-Time Apps with Server Push

One runnable Wisej.NET 4 application per module, built from the course's lesson guide, lab guide and walkthrough video. All seven build pieces of the same application, TicketOps Live (a Web Page Application named TicketOpsLive with a MainPage, exactly as the lab guide asks). Each screen shows only what the module's lab guide and walkthrough video build. Each folder has its own README.md (what to try, lab tasks → code, self-check answers); modules whose lab or video asks for a written deliverable keep it in docs/.

Requirements: .NET 10 SDK and the Wisej-4 4.1.0 NuGet package. Nothing is deployed anywhere.

The modules

ModuleWhat it builds
1 · WebSocket Push vs. Pollinglive status strip + simulated heartbeat (Application.StartTaskApplication.Update), in-request Refresh, a 5-step server event pushed live, an update trace, polling fallback
2 · Who Owns the UIsession inspector + lifecycle logger: a per-session Application.Session counter, Application.Current captured for out-of-bound updates, ApplicationExit cleanup, a global session registry that stores no page references
3 · Progress Without Refreshbackground import monitor: 200 records, push every 10, cooperative cancellation, Fail at 87 button, finally restores the UI, elapsed time and a summary line with a JobId
4 · When Push Is Not Enoughupdate-cadence panel: Wisej.Web.Timer refresh at 250 ms / 1 s / 5 s, model events faster than the UI, dirty-flag coalescing, overlap guard, polling start/stop with live mode
5 · Live Ticket BoardDataGridView bound through BindingSource to a BindingList<Ticket>, rows added and updated in place, selection preserved, "updated" marker, conflict warning, Escalated filter
6 · From One Session to Manyglobal TicketHub singleton (thread-safe, snapshots, TicketChanged with tenant metadata) feeding many sessions through Application.Update(context, …), tenant filtering, per-session notification count, unsubscribe on exit
7 · Production Review (capstone)the complete TicketOps Live: status strip, session diagnostics, import monitor, cadence controls, ticket board, TicketHub, real-time health panel (push vs fallback), Default.json / HealthCheck.json review, production checklist, demo script

Run any module from its TicketOpsLive project folder. The projects multi-target net10.0-windows and net10.0, so dotnet run needs a framework (-f net10.0, or -f net10.0-windows), e.g.

cd "LearnWisej-Samples/Real-Time Server Push Course/Module 3/TicketOpsLive"
dotnet run -f net10.0 --urls http://localhost:5303

or open the TicketOpsLive.slnx in the module folder with Visual Studio and press F5.

To see the polling fallback in any module, add "enableWebSocket": false to the module's Default.json and restart: Application.IsWebSocket stays false, the samples request StartPolling(1000) while a task runs and the browser console shows one Wisej: Poll request. per second. Multi-session modules (2, 6, 7) are meant to be opened in two or three browser tabs at once.