我是用django+channel做的消息推送功能,但是呢有个问题,就是比如系统给A用户推送了一条消息,如果A用户连接到了/message这个websocket,那么消息可以正常推送过去,但是如果A用户没有打开APP并且也没有连接到websocket,那么系统推送的消息就相当于丢失了你期待的结果是什么?能不能做到这种,系统给A推送了10条消息,当A用户打开APP并连接到/message这个websocket时,就把之前推送的10条消息都返回过去消息是不保存在数据库的有一个关键的问题,就是,系统怎么知道A用户有没有连接到/message呢?
1 回答

慕尼黑5688855
TA贡献1848条经验 获得超2个赞
那简单,不用数据库那就放在内存吧。建个字典 dict
存放待用户待推送的消息:
wait_push = { <user_id> : ['text', 'text', ...] }
用户 self.accept()
接受websocket请求后,检测下是否有消息再 self.send()
。为了避免内存高占用,字典可以仅保存一定数量的推送,超过的话就顶掉旧的。
- 1 回答
- 0 关注
- 586 浏览
添加回答
举报
0/150
提交
取消