我们这次只是对于之前的功能做下优化,顺便利用下之前的操作数据的接口,使用下数据库的练习。
在聊天里会有一个上线的概念。上线要通知大家,下线也要通知大家谁离开了,基于此功能我们完善下代码。
首先,我们的登录用户还是用了之前分享中的数据库相关用户,直接调用,之前也是从数据库获取用户,校验密码,密码成功后才让登录。这个在FastApi学习之路(四十七)WebSockets(三)登录后才可以聊天中就已经提到过了。
其次,我们建立了链接管理类,但是我们现在的链接都是没有针对发消息做管理的,我们去扩展下我们之前的发消息的类。
"""
websocket 链接管理
"""
from typing import List, Dict
from starlette.websockets import WebSocket
class ConnectionManager:
def __init__(self):
"""存放链接"""
self.active_connections: List[Dict[str, WebSocket]] = []
async def connect(self, user: str, ws: WebSocket):
"""链接"""
await ws.accept()
self.active_connections.append({"user": user, "ws": ws})
async def disconnect(self, user: str, ws: WebSocket):
"""断开链接,移除"""
self.active_connections.remove({"user": user, "ws": ws})
@staticmethod
async def send_personal_message(message: str, ws: WebSocket):
"""发送所有人消息"""
await ws.send_text(message)
asyn
FastAPI WebSocket聊天室实现

最低0.47元/天 解锁文章
WebSockets(六)聊天室完善&spm=1001.2101.3001.5002&articleId=140382234&d=1&t=3&u=8f445b27346c43e2ae61f65ecfb6b332)
781

被折叠的 条评论
为什么被折叠?



