使用FastAPI套接字聊天系统?



如何在FastAPI中使用套接字实现一个全面的聊天系统?特别要记住以下几点:

  • 多个聊天室用户间多对多
  • 使用SQL或NoSQL数据库存储用于持久化的消息
  • 安全性:验证或可能加密

我看过一些库,但遗憾的是,实际有用的实现还差很远。

任何建议或重定向到更多信息的地方将是很大的帮助!

  1. 对于聊天室,您可以使用内置websockets支持的FastAPI,并添加redis pubsub或PostgreSQL pg_notify来向房间中的所有参与者发送消息。
  2. 在PostgreSQL中存储消息是一个可靠的选择,因为它具有悠久的历史和稳定性。
  3. 认证可以由FastAPI中的OAuth2提供商处理。授权可以通过隐藏在FastAPI文档的高级安全部分中的OAuth2作用域来处理。加密是由HTTPS和反向代理提供的,你把它们放在应用程序的前面。

没有任何现成的库可以提供开箱即用的一切。但是把问题分解成更小的部分,然后再解决它们,会让你走得很远。

  1. 写下你想要存储的关于你的用户、聊天室、消息的字段/数据。
  2. 在FastAPI中实现这些基本模型,可能使用SQLAlchemy。
  3. 将这些模型连接到api端点,以便您可以在Swagger中使用这些模型(列出聊天室,获取和发布消息到聊天室)。在FastAPI中实现一个websocket端点,它会回显发送给它的所有内容。这应该允许你连接一些客户端javascript从websocket发送和接收消息。
  4. 修改你现有的消息存储端点,将相同的消息也推送到redis发布主题,并更改你的websocket端点订阅redis订阅主题。
  5. 向端点添加身份验证。首先是基本的用户/密码,然后是更高级的配置。
  6. 添加反向代理与https在前面,瞧。

相关内容

  • 没有找到相关文章