ThunderPropagator.Channels.Chat 1.0.1-beta.2

This is a prerelease version of ThunderPropagator.Channels.Chat.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package ThunderPropagator.Channels.Chat --version 1.0.1-beta.2
                    
NuGet\Install-Package ThunderPropagator.Channels.Chat -Version 1.0.1-beta.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ThunderPropagator.Channels.Chat" Version="1.0.1-beta.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ThunderPropagator.Channels.Chat" Version="1.0.1-beta.2" />
                    
Directory.Packages.props
<PackageReference Include="ThunderPropagator.Channels.Chat" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ThunderPropagator.Channels.Chat --version 1.0.1-beta.2
                    
#r "nuget: ThunderPropagator.Channels.Chat, 1.0.1-beta.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ThunderPropagator.Channels.Chat@1.0.1-beta.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ThunderPropagator.Channels.Chat&version=1.0.1-beta.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=ThunderPropagator.Channels.Chat&version=1.0.1-beta.2&prerelease
                    
Install as a Cake Tool

ThunderPropagator.Channels

License .NET Platforms

Redefining real-time data streaming: effortless, blazingly fast, and cloud-native for maximum impact.

Overview

ThunderPropagator.Channels (Project ARC) is a comprehensive library delivering 12 production-ready real-time streaming implementations built on the ThunderPropagator framework. This repository showcases blazingly fast, cloud-native WebSocket-based pub/sub patterns across diverse domains—from simple clock feeds to complex multiplayer games.

What's Included

  • 7 Production Channels: Fully-featured real-time channels (Chat, Clock, NetworkMonitoring, Notifications, ResourceMonitoring, Throughput, TimeZones)
  • 3 Business Demos: Complex domain-driven applications (Airport, Portfolio, StockListBasic)
  • 2 Interactive Games: Multiplayer games with bidirectional communication (RockPaperScissors, TicTacToe)
  • Comprehensive Documentation: Auto-generated, deep-dive technical docs with Mermaid diagrams
  • Multi-Framework: Targets .NET 8, 9, and 10
  • Multi-Platform: Supports AnyCPU, x86, x64, ARM64

Quick Start

Prerequisites

  • .NET SDK 9.0+ (see global.json)
  • GitHub Personal Access Token (for ThunderPropagator package access)

Configure NuGet Source

ThunderPropagator packages are hosted on GitHub Packages. Add the source:

# Set your GitHub token as environment variable
$env:GH_TOKEN = "your_github_token"

# Add GitHub Packages source
dotnet nuget add source "https://nuget.pkg.github.com/KiarashMinoo/index.json" \
    --name github \
    --username YOUR_GITHUB_USERNAME \
    --password $env:GH_TOKEN \
    --store-password-in-clear-text

Alternatively, use the included nuget.config:

<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="github" value="https://nuget.pkg.github.com/KiarashMinoo/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <github>
      <add key="Username" value="KiarashMinoo" />
      <add key="ClearTextPassword" value="%GH_TOKEN%" />
    </github>
  </packageSourceCredentials>
</configuration>

Install & Build

# Clone repository
git clone https://github.com/KiarashMinoo/ThunderPropagator.Channels.git
cd ThunderPropagator.Channels

# Restore packages
dotnet restore

# Build solution (Release mode)
dotnet build -c Release --no-incremental

# Run tests
dotnet test -c Release

Use a Channel

using Microsoft.Extensions.DependencyInjection;
using ThunderPropagator.Channels.Clock;

// Register Clock channel
var services = new ServiceCollection();
services.AddClockChannel(config =>
{
    config.IsEnabled = true;
});

var serviceProvider = services.BuildServiceProvider();
var channel = serviceProvider.GetRequiredService<ClockChannel>();

// Subscribe to real-time updates
var subscription = await channel.SubscribeAsync(new Dictionary<string, object>
{
    ["Key"] = "Now"
});

subscription.OnMessage(message =>
{
    var clockMessage = message as ClockChannelFeederMessage;
    Console.WriteLine($"Current time: {clockMessage.DateTime}");
});

Documentation

This repository publishes comprehensive generated documentation under /docs. The catalog below links to areas and key subfolders with metrics for types, files, and diagrams.

Documentation Catalog

Last generated: December 28, 2025

Architecture

ThunderPropagator.Channels follows strict architectural patterns enforced through ArchTests:

Channel Structure (Mandatory Components)

Every channel implementation includes:

  1. {Name}Channel.cs — Inherits AbstractChannel<TMetadata, TConfiguration>
  2. {Name}ChannelConfiguration.cs — Extends AbstractChannelConfiguration
  3. {Name}ChannelFeederMessage.cs — Inherits FeederMessage (data contract)
  4. {Name}ChannelMetadata.cs — Extends AbstractChannelMetadata
  5. {Name}ChannelExtensions.cs — DI registration via IServiceCollection extensions

Patterns

  • Feeder Pattern: Data sources generating/collecting data (see NowClockFeeder)
  • Pipeline Pattern: Bidirectional request/response handlers (see Chat Pipelines)
  • DI Registration: Fluent configuration via extension methods

Build System & Versioning

  • Version: 1.0.1-beta.7 (Directory.Build.props)
  • Frameworks: .NET 8, 9, 10 (controlled in Directory.Build.props)
  • Platforms: AnyCPU, x86, x64, ARM64
  • Central Package Management: Directory.Packages.props
  • Package Naming: Includes configuration and platform suffixes
    • Debug: {ProjectName}.Debug.{Platform}
    • Release: {ProjectName}.{Platform} (AnyCPU omits platform suffix)

Building

# Build all platforms for Release
dotnet build ThunderPropagator.Channels.sln -c Release -p:Platform=AnyCPU
dotnet build ThunderPropagator.Channels.sln -c Release -p:Platform=x64
dotnet build ThunderPropagator.Channels.sln -c Release -p:Platform=ARM64

Testing

# Run all tests
dotnet test

# Run with coverage
dotnet test --collect:"XPlat Code Coverage"

Package Publishing

# Pack all platforms
dotnet pack -c Release -p:Platform=x64
dotnet pack -c Release -p:Platform=ARM64

# Publish to GitHub Packages
dotnet nuget push "bin/Release/*.nupkg" --source github --api-key $env:GITHUB_TOKEN

Project Organization

src/
├── Channels/          # 7 production channels
│   ├── ThunderPropagator.Channels.Chat/
│   ├── ThunderPropagator.Channels.Clock/
│   ├── ThunderPropagator.Channels.NetworkMonitoring/
│   ├── ThunderPropagator.Channels.Notifications/
│   ├── ThunderPropagator.Channels.ResourceMonitoring/
│   ├── ThunderPropagator.Channels.Throughput/
│   └── ThunderPropagator.Channels.TimeZones/
├── Demo/              # 3 business demos
│   ├── ThunderPropagator.Channels.Demo.Airport/
│   ├── ThunderPropagator.Channels.Demo.Portfolio/
│   └── ThunderPropagator.Channels.Demo.StockListBasic/
└── Games/             # 2 interactive games
    ├── ThunderPropagator.Channels.Games.RockPaperScissors/
    └── ThunderPropagator.Channels.Games.TicTacToe/

Tests/
├── ArchTests/         # Architecture validation tests
├── UnitTests/         # Comprehensive unit test suites
│   ├── Channels/
│   ├── Demo/
│   └── Games/
└── Demo/              # Demo-specific tests

docs/                  # Auto-generated documentation
├── README.md          # Documentation landing page
├── Channels/          # Channel documentation with Mermaid diagrams
├── Demo/              # Demo documentation
└── Games/             # Game documentation

Dependencies

Core Framework

  • ThunderPropagator 1.0.1-beta.5+
    • Core real-time streaming framework
    • WebSocket-based pub/sub infrastructure
    • Channel abstractions and patterns

Testing & Utilities

  • Testing: xUnit, NSubstitute (mocking), coverlet (coverage)
  • Utilities: Bogus (fake data), NodaTime (timezones), JetBrains.Annotations
  • Infrastructure: Microsoft.Extensions.* (DI, caching, HTTP), Polly (resilience)

See Directory.Packages.props for complete dependency list with framework-specific versions.

Code Conventions

  • Nullable Reference Types: Enabled globally
  • Implicit Usings: Enabled
  • XML Documentation: Required (generated for NuGet packages)
  • Conditional Compilation: Classes are non-sealed in DEBUG for testability
  • Telemetry: All pipelines/feeders include Activity tracing and metrics
  • Health Monitoring: Feeders expose health endpoints

Contributing

Contributions are welcome! Please ensure:

  1. All architecture tests pass (dotnet test Tests/ArchTests)
  2. XML documentation is provided for public APIs
  3. Follow existing channel/feeder/pipeline patterns
  4. Add unit tests for new functionality
  5. Update documentation (docs/ folder)

License

This project is licensed under the Apache License 2.0. See LICENSE for details.

Authors

ThunderPropagator Corporation (Project ARC)

Copyright ©2024 ThunderPropagator Corporation


Blazingly fast. Cloud-native. Maximum impact. 🚀

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on ThunderPropagator.Channels.Chat:

Package Downloads
ThunderPropagator.Channels.Chat.MongoDB

ThunderPropagator (Project ARC): High-performance data propagation; effortless, blazingly fast and cloud-native for maximum impact

ThunderPropagator.Channels.Chat.EntityFrameworkCore

ThunderPropagator (Project ARC): High-performance data propagation; effortless, blazingly fast and cloud-native for maximum impact

ThunderPropagator.Channels.Chat.InMemory

ThunderPropagator (Project ARC): High-performance data propagation; effortless, blazingly fast and cloud-native for maximum impact

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1-beta.138 0 9/14/2026
1.0.1-beta.137 0 9/14/2026
1.0.1-beta.136 75 9/6/2026
1.0.1-beta.134 74 9/2/2026
1.0.1-beta.133 69 9/2/2026
1.0.1-beta.130 78 9/1/2026
1.0.1-beta.129 75 8/31/2026
1.0.1-beta.128 72 8/31/2026
1.0.1-beta.127 71 8/31/2026
1.0.1-beta.126 68 8/31/2026
1.0.1-beta.125 67 8/31/2026
1.0.1-beta.124 72 8/30/2026
1.0.1-beta.123 75 8/30/2026
1.0.1-beta.122 62 8/30/2026
1.0.1-beta.121 69 8/30/2026
1.0.1-beta.120 68 8/30/2026
1.0.1-beta.119 74 8/30/2026
1.0.1-beta.118 72 8/30/2026
1.0.1-beta.117 71 8/30/2026
1.0.1-beta.2 89 12/29/2025
Loading failed

- Update tests to assert internal visibility for feeder messages and pipelines across various channels\n- Add unit tests for various models and enums in ThunderPropagator\n- Update AssemblyInfo.cs files to include InternalsVisibleTo attribute for unit testing