CodeWF.EventBus.Socket
0.0.2
See the version list below for details.
dotnet add package CodeWF.EventBus.Socket --version 0.0.2
NuGet\Install-Package CodeWF.EventBus.Socket -Version 0.0.2
<PackageReference Include="CodeWF.EventBus.Socket" Version="0.0.2" />
paket add CodeWF.EventBus.Socket --version 0.0.2
#r "nuget: CodeWF.EventBus.Socket, 0.0.2"
// Install CodeWF.EventBus.Socket as a Cake Addin #addin nuget:?package=CodeWF.EventBus.Socket&version=0.0.2 // Install CodeWF.EventBus.Socket as a Cake Tool #tool nuget:?package=CodeWF.EventBus.Socket&version=0.0.2
CodeWF.EventBus.Socket
English | 简体中文
Distributed Event Bus Implemented with Socket, Without Relying on Third-Party MQ
CodeWF.EventBus.Socket
is a lightweight, Socket-based distributed event bus system designed to simplify event communication in distributed architectures. It allows processes to communicate via a publish/subscribe pattern without relying on external message queue services.
Features
- Lightweight: No dependency on external MQ services, reducing system complexity and dependencies.
- High Performance: Direct communication based on Socket, providing low-latency, high-throughput message delivery.
- Flexibility: Supports custom event types and message handlers, making it easy to integrate into existing systems.
- Scalability: Supports multiple client connections, suitable for distributed system environments.
Installation
Install CodeWF.EventBus.Socket
via the NuGet
Package Manager:
Install-Package CodeWF.EventBus.Socket
Server Usage
Running the Event Service
In your server code, create and start an EventServer
instance to listen for client connections and events.
using CodeWF.EventBus.Socket;
// Create an instance of the event server
IEventServer eventServer = new EventServer();
// Start the event server, listening on a specified IP and port
eventServer.Start("127.0.0.1", 9100);
Stopping the Event Service
When the event service is no longer needed, call the Stop
method to gracefully shut down the server.
eventServer.Stop();
Client Usage
Connecting to the Event Service
In your client code, create an EventClient
instance and connect to the event server.
using CodeWF.EventBus.Socket;
// Create an instance of the event client
IEventClient eventClient = new EventClient();
// Connect to the event server
if (eventClient.Connect("127.0.0.1", 9100, out var message))
{
Console.WriteLine("Successfully connected to the event service!");
}
else
{
Console.WriteLine($"Failed to connect to the event service: {message}");
}
Subscribing to Events
Subscribe to a specific type of event and specify an event handler function.
eventClient.Subscribe<NewEmailNotification>("event.email.new", ReceiveNewEmail);
private void ReceiveNewEmail(NewEmailNotification message)
{
// Handle new email notification
Console.WriteLine($"Received new email with subject: {message.Subject}");
}
Publishing Events
Publish an event to a specified topic for subscribed clients to process.
// Publish a new email notification event
eventClient.Publish("event.email.new", new NewEmailNotification { Subject = "Congratulations on Winning the GitHub First Prize", Content = "We're thrilled to inform you that you've won...", SendTime = new DateTime(2024, 7, 27) });
Unsubscribing from Events
When you no longer need to receive a certain type of event, you can unsubscribe.
eventClient.Unsubscribe<NewEmailNotification>("event.email.new", ReceiveNewEmail);
Disconnecting from the Event Service
When you've finished processing events or need to disconnect from the server, call the Disconnect
method.
eventClient.Disconnect();
Console.WriteLine("Disconnected from the event service");
Notes
- Ensure that the server and client use consistent addresses and port numbers, and that the port is not occupied by other services.
- In production environments, the server should be configured to listen on a public IP address or an appropriate network interface.
- Consider implementing reconnection logic in clients to handle network disruptions and service restarts.
- Depending on your requirements, you can extend the
EventServer
andEventClient
classes to support more complex features, such as message encryption, authentication, and authorization.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.