Small ASP.NET web server for one way communication between two clients.
This server is one of the key components of EasyLogon project.
sequenceDiagram
participant S as Sender
participant B as Backbone
participant R as Receiver
opt SignalR
R->>+B: Connection request
B->>-R: connection_id
end
opt Arbitrary data channel
R-->>S: connection_id
end
opt HTTP POST
S->>+B: connection_id + data
end
opt SignalR
B->>-R: data
end
- SignalR:
/ws- WebSocket endpoint for real-time communication. - POST:
/send?id={connectionId}- HTTP POST endpoint for sending data to the receiver.
Note
For more details on API implementation, restrictions and responses, see Program.cs source file.
- The arbitrary channel for
connectionIdtranmission should be as secure as possibe (preferably an offline channel), since posession of theconnectionIdcan pose a security threat. - Connection between Backbone and receiver preferably should be re-established after every transmission to avoid replay attacks.
- Data sent via HTTP POST is stored in memory only until it is delivered to the receiver. If the receiver is not connected, the data will be discarded (the call still will be resolved with HTTP 200 OK).
- Data sent via HTTP POST (regardless whether it's an HTTP or HTTPS) must be end-to-end encrypted by the sender.
For development you can use Dev Containers or GitHub Codespaces. Otherwise you will need to install following tools:
Here're some commonly used commands:
dotnet restore # Install dependencies
dotnet run # Start the development server
dotnet build # Build the project for productionTo build a Docker image, run:
docker build -t backbone:latest .
# To run the Docker container:
docker run -d -p 8080:8080 --name backbone_server backbone:latestTip
If you use VS Code, you can also use pre-defined tasks for building and debugging.
There are many ways in which you can participate in the project, for example:
- Submit bugs and feature requests, and help us verify as they are checked in
- Review source code changes
- Review documentation and make pull requests for anything from typos to new content
If you are interested in fixing issues and contributing directly to the code base, please refer to the Contribution Guidelines
©2025 Eugene Fox. Licensed under MIT license