#chat #server

app wschat

非常简单的WebSocket聊天服务器

4个版本

0.2.1 2021年2月8日
0.2.0 2020年11月30日
0.1.2 2020年8月17日
0.1.0 2020年8月11日

#199 in WebSocket

AGPL-3.0-only

28KB
152

WebSocket聊天

wschat是一个非常简单的WebSocket聊天服务器。该项目在AGPLv3许可证下发布。

wschat不支持加密或直接/群组消息。请将wschat视为实时公共(受监管)邮件列表,无历史记录。任何人都可以加入服务器并监听所有消息。

消息

当WebSocket打开时,服务器期望JSON消息中(至少)包含以下字段

{
    "usr": "Chat user",
    "msg": "Message from that user"
}

然后,服务器将当前UTC日期和时间更新到消息中

{
    "usr": "Chat user",
    "msg": "Message from that user",
    "tim": "2020-08-11T22:26:58.118678679Z"
}

并将消息发送到所有打开的WebSocket(包括发送者自己的。)

JWT验证

如果服务器使用JWT_SECRET环境变量运行,它期望JSON消息中包含另一个字段

{
    "usr": "Chat user",
    "jwt": "Encoded JWT here",
    "msg": "Message from that user"
}

然后,服务器使用JWT_SECRET解码每条消息,只有解码成功时才发送消息。此验证不涉及过期字段exp

注意: 这仅适用于发送消息!尽管如此,任何连接到服务器的用户都可以接收所有消息。

客户端

查看static目录以查看简单的wschat客户端示例。

贡献

使用OneFlow分支模型并保持变更日志

编写优秀的git提交信息

  1. 用空行将主题与正文分开。
  2. 将主题行限制在50个字符以内。
  3. 将主题行大写。
  4. 不要在主题行末尾使用句号。
  5. 在主题行中使用祈使语气。
  6. 在72个字符处换行。
  7. 使用正文解释“是什么和为什么”而不是“如何”。

添加功能或热补丁时,使用测试驱动开发(TDD)

  1. 添加单元测试和骨架。
  2. 运行测试(cargo test),确保测试失败
  3. 现在编写代码。实现功能。
  4. 再次运行测试,确保测试通过
  5. 重构。

记录新的函数、方法、结构体和文件。使用示例部分作为基本的单元测试。

依赖关系

~23–38MB
~690K SLoC