SvelteWebSocketServer 2.0.1-alpha

This is a prerelease version of SvelteWebSocketServer.
There is a newer version of this package available.
See the version list below for details.
dotnet add package SvelteWebSocketServer --version 2.0.1-alpha                
NuGet\Install-Package SvelteWebSocketServer -Version 2.0.1-alpha                
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="SvelteWebSocketServer" Version="2.0.1-alpha" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SvelteWebSocketServer --version 2.0.1-alpha                
#r "nuget: SvelteWebSocketServer, 2.0.1-alpha"                
#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.
// Install SvelteWebSocketServer as a Cake Addin
#addin nuget:?package=SvelteWebSocketServer&version=2.0.1-alpha&prerelease

// Install SvelteWebSocketServer as a Cake Tool
#tool nuget:?package=SvelteWebSocketServer&version=2.0.1-alpha&prerelease                

SvelteWebSocketServer

Basic C# implementation of a WebSocket server for use with svelte-websocket-stores

nuget version license

Usage

Basic Initialization

using SvelteWebSocketServer;

var wss = new WebSocketServer();
var wsw = wss.webSocketWrapper; // Main entry-point

wss.Start(); // Non-blocking

Initialization using the WebSocketWrapperListener for easy event handling


using SvelteWebSocketServer;

var wss = new WebSocketServer();
var wsw = wss.webSocketWrapper; // Main entry-point
var wswListener = new WebSocketWrapperListener(wsw);

wss.Start(); // Non-blocking

Basic event handling

wsw.OnNumberSet += (id, value) => ...

Event handling using WebSocketWrapperListener

wswListener.AddBooleanHandler("tp1.some.state", (id, value) => ... );
wswListener.AddBooleanRegexHandler(new Regex("(.+?)\\.some\\.state"), (match, value) => ... );

WebSocket Message Format

All communication between a client and this library is over WebSocket.

All WebSocket messages are interpreted as JSON objects.

The message object is defined as:

type Message = {
	id: string,
	type: string,
	value: boolean | number | string,
}

The field type determines how the value field is interpreted as well as which of the tables (booleans, numbers, or strings) the id field will be indexing into.

Server

Client Connected
  1. Send the client messages for all the variables currently stored values
Message Received
  1. The incoming text data is parsed as JSON.
  2. The object's type field is switched on with the cases "boolean", "number", and "string". If there is no match, the message is discarded.
  3. Using the values from the id and value fields, set the value of the respective variable to the new value.
  4. Send all clients a message for the new value.
  5. Handle any events.

Client [^1]

Message Received
  1. The incoming text data is parsed as JSON.
  2. The object's id field is checked if it starts with the client's local ID prefix (for example "id1.") or the global ID prefix ("global.").
  3. If it does, the id field is rewritten without that prefix and continues. Otherwise, the message is discarded.
  4. The object's type field is switched on with the cases "boolean", "number", and "string". If there is no match, the message is discarded.
  5. The value field is cast to its respective type.

[^1]: This is the behavior expected by this WebSocket client

Product Compatible and additional computed target framework versions.
.NET Framework net472 is compatible.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
2.1.0 88 10/9/2024
2.0.2 108 8/29/2024
2.0.1 97 7/22/2024
2.0.1-alpha 86 7/22/2024
2.0.0-alpha 79 7/22/2024
1.0.2 104 7/8/2024
1.0.0.1 106 7/2/2024
1.0.0 99 7/1/2024