如何在FastAPI中使用套接字实现一个全面的聊天系统?请特别记住以下几点:
我看过一些库,但遗憾的是,实际有用的实现还远远不够。任何建议或重定向到更多信息的地方将是很大的帮助!
gg0vcinb1#
1.对于聊天室,您可以使用FastAPI内置的websockets支持,并添加redis pubsub或PostgreSQL pg_notify,以便向聊天室中的所有参与者发送消息。1.在PostgreSQL中存储消息是一个可靠的选择,因为它具有悠久的历史和稳定性。1.身份验证可由OAuth2 provider in FastAPI处理。授权可由隐藏在FastAPI文档的“高级安全性”部分中的OAuth2作用域处理。加密由放在应用前面的HTTPS和reverse proxy提供。没有任何现成的库可以提供开箱即用的所有功能,但是将问题分解成更小的部分,然后在这些部分上工作会让你走得很远。1.写下你想存储的关于你的用户、聊天室、消息的字段/数据。1.可能使用SQLAlchemy在FastAPI中实现这些基本模型。1.把这些模型连接到API端点,这样你就可以在Swagger中使用这些模型(列出聊天室,获取和发布消息到聊天室)。1.在FastAPI中实现一个WebSocket端点,它将回送发送给它的所有消息。这应该允许您连接一些客户端javascript,用于从websocket发送和接收消息。1.修改你现有的消息存储端点,将相同的消息也推送到redis发布主题,并修改你的WebSocket端点订阅redis订阅主题。1.向端点添加身份验证。首先是基本的用户/密码,然后是更高级的配置。1.在前面添加https的反向代理,瞧。
1条答案
按热度按时间gg0vcinb1#
1.对于聊天室,您可以使用FastAPI内置的websockets支持,并添加redis pubsub或PostgreSQL pg_notify,以便向聊天室中的所有参与者发送消息。
1.在PostgreSQL中存储消息是一个可靠的选择,因为它具有悠久的历史和稳定性。
1.身份验证可由OAuth2 provider in FastAPI处理。授权可由隐藏在FastAPI文档的“高级安全性”部分中的OAuth2作用域处理。加密由放在应用前面的HTTPS和reverse proxy提供。
没有任何现成的库可以提供开箱即用的所有功能,但是将问题分解成更小的部分,然后在这些部分上工作会让你走得很远。
1.写下你想存储的关于你的用户、聊天室、消息的字段/数据。
1.可能使用SQLAlchemy在FastAPI中实现这些基本模型。
1.把这些模型连接到API端点,这样你就可以在Swagger中使用这些模型(列出聊天室,获取和发布消息到聊天室)。
1.在FastAPI中实现一个WebSocket端点,它将回送发送给它的所有消息。这应该允许您连接一些客户端javascript,用于从websocket发送和接收消息。
1.修改你现有的消息存储端点,将相同的消息也推送到redis发布主题,并修改你的WebSocket端点订阅redis订阅主题。
1.向端点添加身份验证。首先是基本的用户/密码,然后是更高级的配置。
1.在前面添加https的反向代理,瞧。