django的消息推送问题

我是用django+channel做的消息推送功能,但是呢有个问题,就是比如系统给A用户推送了一条消息,如果A用户连接到了/message这个websocket,那么消息可以正常推送过去,但是如果A用户没有打开APP并且也没有连接到websocket,那么系统推送的消息就相当于丢失了

你期待的结果是什么?

能不能做到这种,系统给A推送了10条消息,当A用户打开APP并连接到/message这个websocket时,就把之前推送的10条消息都返回过去

消息是不保存在数据库的

有一个关键的问题,就是,系统怎么知道A用户有没有连接到/message呢?


德玛西亚99
浏览 588回答 1
1回答

慕尼黑5688855

那简单,不用数据库那就放在内存吧。建个字典&nbsp;dict&nbsp;存放待用户待推送的消息:wait_push&nbsp;=&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;<user_id>&nbsp;:&nbsp;['text',&nbsp;'text',&nbsp;...] }用户&nbsp;self.accept()&nbsp;接受websocket请求后,检测下是否有消息再&nbsp;self.send()&nbsp;。为了避免内存高占用,字典可以仅保存一定数量的推送,超过的话就顶掉旧的。
打开App,查看更多内容
随时随地看视频慕课网APP