后端使用 flask,前台系统用户登录之后有未读消息的数目提醒,后台系统进行推送消息,请问后台系统推送消息之后,前台系统应该怎么更新未读消息数?

2019-08-14 15:31:43 +08:00
 kayseen
大概描述如题
比如说,前台系统的用户登录之后,在右上角有一个未读消息的数目提醒,比如现在有两个未读消息,现在后台系统的管理员又进行推送了一条消息,前台系统就应该有三条未读消息数了。请问在 flask 中应该怎么实现?
2496 次点击
所在节点    Python
11 条回复
vissssa
2019-08-14 15:43:45 +08:00
推一个未读总数
ebingtel
2019-08-14 15:52:22 +08:00
要么 websocket,要么前端轮询?
lybcyd
2019-08-14 16:46:20 +08:00
websocket,效果比较好,除了更新未读消息数量,也可以实时发送通知。嫌麻烦就 ajax 轮询,未读消息的话看消息种类吧,频率应该不需要太高。
kayseen
2019-08-14 16:51:42 +08:00
@lybcyd 嗯嗯,请问使用 websocket 的话,是使用的哪个 websocket 包比较好?
kayseen
2019-08-14 16:51:51 +08:00
@ebingtel 嗯嗯,请问使用 websocket 的话,是使用的哪个 websocket 包比较好?
bugcoder
2019-08-14 16:52:38 +08:00
ebingtel
2019-08-14 18:46:21 +08:00
@kayseen PY2 flask-socketio 资料不较多; PY3,有 websockets 库了
kayseen
2019-08-17 21:42:16 +08:00
@ebingtel
@lybcyd
@bugcoder
麻烦问下,我一个后台系统的管理员推送消息通知,前台系统的所有用户接受通知,并且显示已读和未付。我是不是应该在后台系统维护一个管理员的通知信息表,在前台系统维护一个前台用户关联后台信息的表,然后每一次后台管理员推送消息,就往所有用户关联的消息表中写入记录?
这样的话,如果有 10000 个前台用户,那么后台管理员每一次推送消息,就要写 10000 条数据吗?
lybcyd
2019-08-17 23:13:32 +08:00
@kayseen 这个我也不是非常懂,简单说说我的想法,蹲一下大神吧。
你说的做法是最直观的,PHP laravel 自带的通知系统好像就是这么做的。但是用户稍微一多,这个一次性写入量就太大了,发布通知的操作会非常慢,所以要加缓存和队列处理一下,先发布消息再异步写入数据库。
要么就换个思路,只维护一个已读消息表。默认所有消息未读,如果用户读取消息则插入进数据库,这样可以分散压力,数据量也不会那么大,就是查询语句稍微麻烦一点(也没麻烦到哪里去)
还有一种可能就是干脆不用关联表,用户加一个已读消息的字段,保存该用户已读消息。缺点就是有长度上限,可能不利于扩展。没试过这种方案,也是刚刚想到的。
ebingtel
2019-08-18 11:15:14 +08:00
@kayseen @lybcyd 消息分为两类:群发的、点对点的 1 ) 群发的,消息保存一条,每个用户保存一个已读记录 2 ) 点对点的,一个消息一条记录,用户保存一条已读记录
kayseen
2019-08-22 08:08:10 +08:00
@ebingtel 现在是既有群发又有点对点的。群发的比如后台管理员给所有用户推送产品更新通知,点对点的比如用户注册激活或者修改密码之后,给用户发一条成功的通知。。。所以这种数据库我就不知道该用哪种了。。,

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

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

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

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

© 2021 V2EX