#websocket #chat

app wschat

Very simple WebSocket chat server

2 releases

0.1.2 Aug 17, 2020
0.1.0 Aug 11, 2020

#15 in WebSocket

AGPL-3.0-only

27KB
118 lines

WebSocket Chat

wschat is very simple WebSocket chat server. The project is published under AGPLv3 License.

Messaging

When a WebSocket is opened, the server expects the following 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.)

JWT validation

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.

Client

See static directory to check out a simple wschat client example.

Contribute

Use OneFlow branching model and keep the changelog.

Write great git commit messages:

  1. Separate subject from body with a blank line.
  2. Limit the subject line to 50 characters.
  3. Capitalize the subject line.
  4. Do not end the subject line with a period.
  5. Use the imperative mood in the subject line.
  6. Wrap the body at 72 characters.
  7. Use the body to explain what and why vs. how.

When adding feature or hotfix, use Test-driven development (TDD):

  1. Add unit test and skeleton.
  2. Run tests (cargo test), check that the test fail.
  3. Code now. Implement functionality.
  4. Run tests again, check that the test pass.
  5. Refactor.

Document new functions, methods, structs, and files. Use Examples section as basic unit tests.

Dependencies

~20MB
~487K SLoC