| Crates.io | wschat |
| lib.rs | wschat |
| version | 0.2.1 |
| created_at | 2020-08-11 23:51:28.004962+00 |
| updated_at | 2021-02-08 15:29:41.126414+00 |
| description | Very simple WebSocket chat server. |
| homepage | |
| repository | https://git.sr.ht/~qeef/wschat |
| max_upload_size | |
| id | 275588 |
| size | 83,620 |
wschat is very simple WebSocket chat server. The project is published
under AGPLv3 License.
wschat does NOT support encryption or direct/group messaging. Please,
think about wschat as real-time public (moderated) mailing list without
history. Anyone can join to the server and listen to all the messages.
When a WebSocket is opened, the server expects (at least) the following fields in a JSON message:
{
"usr": "Chat user",
"msg": "Message from that user"
}
Then, the server updates the message with current UTC date/time:
{
"usr": "Chat user",
"msg": "Message from that user",
"tim": "2020-08-11T22:26:58.118678679Z"
}
And sends the message to all the opened WebSockets (including the sending one.)
If the server is run with JWT_SECRET environment variable, it expects another
field in the JSON message:
{
"usr": "Chat user",
"jwt": "Encoded JWT here",
"msg": "Message from that user"
}
Then, the server decode each message with JWT_SECRET and sends the message
only if the docode is successful. This validation does not concern expiration
field exp.
NOTE: This is for sending messages only! Anyone connected to the server can receive all the messages, though.
See static directory to check out a simple wschat client example.
Use OneFlow branching model and keep the changelog.
Write great git commit messages:
When adding feature or hotfix, use Test-driven development (TDD):
cargo test), check that the test fail.Document new functions, methods, structs, and files. Use Examples section as basic unit tests.