本文发表于入职啦(公众号: ruzhila) 大家可以访问入职啦学习更多的编程实战。
项目地址
代码已经开源, fastapi_chatroom 👏 欢迎Star
代码运行效果:
所有的项目都在github上开源:100-line-code 欢迎Star 👏
用100行代码的不同语言(Java、Python、Go、Javascript、Rust)实现项目,通过讲解项目的实现,帮助大家学习编程
我们会定期在群里分享最新的项目实战代码,包括不同语言的实现
如何做一个聊天室
网页的聊天室最基本的功能就是能输入消息,并且广播给聊天室里面的所有成员,要支持消息的发生和接送,我们可以使用Websocket协议来实现这个功能
如果没有Websocket, 网页如果要获取服务器上的消息,就只能通过Pull
的方式去获取最新的消息,也就是我们常说的轮询,这样会导致服务器的压力增大,而且消息的实时性也不高
这是一个简单的聊天室的工作流程:
- Bob 连接到聊天室,服务器启动了2个协程,一个用于接收消息,一个用于发送消息
- Bob 发送消息到服务端, 然后通过
dispatch_messsage
协程广播给所有的用户 - 聊天室所有的用户 收到消息之后,通过websocket发送到网页上,显示消息
这是最基本的聊天室的工作流程,通过这样的流程,我们可以大概知晓我们要怎么设计程序结构
下一步就是我们要用FastAPI实现简单的Websocket代码