使用 Python 开发一套类似聊天室的功能,具体应该怎么搞更好一些

2020-10-27 18:27:45 +08:00
 AllRightReserve

我们目前有一套系统带的有 web 管理页面,然后现在有一个需求是实现在系统内拉群组聊天的功能。 1.消息需要持久化,用户随时都可能调出来之前的聊天记录。 2.支持在群组内 @人发消息,支持消息延后发送,比如说当前的用户不在线,等他上线的时候直接给他 这个通知消息。 3.每拉一个群组这个群组里就默认存在一个机器人,用户可以 @机器人发一些跟系统相关的操作。

由于目前是调研阶段,我用 websocket 写了一个简单的,一个 server,起几个客户端,发消息是没啥问题。但是感觉不咋行,有几个问题。 1.比如说同时间许多人都在拉自己的群组,那这个时候就有很多 socket 长连接会不会影响系统资源消耗? 2.消息的持久化我目前想到的是使用 mongodb,就直接把消息全塞进去。当用户打开这个群聊的时候就取出来给他,有没有更好的解决方案? 3.有没有更加好的技术方案

2038 次点击
所在节点    Python
8 条回复
zhengxiaowai
2020-10-27 19:37:19 +08:00
你这是一整套 IM,如果你有时间,我能说一天。。
euph
2020-10-27 22:40:37 +08:00
有本书叫《 Flask Web 开发实战》,里面有个项目就是在线聊天室
kerro1990
2020-10-27 23:53:56 +08:00
聊天室在这个年代还是很简单的,数据直接 mysql 存储多方便,QQ 都是这样做的
xcstream
2020-10-28 00:28:11 +08:00
用 mqtt broker
krixaar
2020-10-28 08:22:21 +08:00
遇事不决上 Django channels,官方文档的教程就是写个聊天室🤣
l4ever
2020-10-28 08:38:11 +08:00
用 mqtt 没错了.
HashV2
2020-10-28 11:30:41 +08:00
tornado 源码 demo 里也有一个 chat

我感觉搞一整套也是挺难的,看能不能找个符合需求的聊天室的库直接用,省事多了

没必要纠结用 python
johnsona
2020-11-08 00:33:45 +08:00
没必要纠结,用别人的商业 IM SDK 快速无痛

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/719142

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX