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
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
客户端示例。
贡献
- 用空行将主题与正文分开。
- 将主题行限制在50个字符以内。
- 将主题行大写。
- 不要在主题行末尾使用句号。
- 在主题行中使用祈使语气。
- 在72个字符处换行。
- 使用正文解释“是什么和为什么”而不是“如何”。
添加功能或热补丁时,使用测试驱动开发(TDD)
- 添加单元测试和骨架。
- 运行测试(
cargo test
),确保测试失败。 - 现在编写代码。实现功能。
- 再次运行测试,确保测试通过。
- 重构。
记录新的函数、方法、结构体和文件。使用示例部分作为基本的单元测试。
依赖关系
~23–38MB
~690K SLoC