Crates.io | wschat |
lib.rs | wschat |
version | 0.2.1 |
source | src |
created_at | 2020-08-11 23:51:28.004962 |
updated_at | 2021-02-08 15:29:41.126414 |
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.