【Rust日报】2021-05-25 20分钟用 Rust 写一个 MVP 聊天服务器

2021-06-16 10:39:22 浏览数 (1)

20分钟用 Rust 写一个 MVP 聊天服务器

今天 @吴翱翔 在飞书直播为我们展示了如何基于 tokio 来实现简单的聊天服务器,实现的功能有:

  • 通过 websocket 协议来传输文本式的指令
  • 通过 tokio::sync::boardcast 来实现多生产者多消费者消息队列,以使单个用户发送的消息可以传播给当前在线的用户
  • 在应用层面通过心跳超时检测来回收资源。Up 主特别指出不使用 TCP 的 close 来检测断连的原因:因为在当前版本 TCP 连接中断并不会发送消息给正在等待信号的消息循环,使得这部分的资源会被一直占用且无法回收,造成资源的浪费以及被 DDoS 攻击轰炸的风险。

Up主在直播后的总结:

关于聊天应用还有 阅后即焚、敏感文字识别、消息撤回、私密聊天等等功能可以做的,我这也只是抛砖引玉,只完成了一个公共聊天室的简单功能。重点还是要理解协程之间消息队列、生产着消费者模型这些,但也看到了Rust快速快发后端应用的潜力

源码: https://github.com/pymongo/chat_server

Python 之父 Guido 对其它编程语言的看法

其中,关于 Rust 他如此评价[^1]:

Rust 在一个特定的领域真正改进了 C ,它使绕过编译器的检查变得更加困难。当然,它以一种近乎完美的方式解决了内存分配问题。

[^1]:消息来源:https://zhuanlan.zhihu.com/p/374942737

0 人点赞