为了账号安全,请及时绑定邮箱和手机立即绑定

django的消息推送问题

django的消息推送问题

德玛西亚99 2018-07-21 08:53:18
我是用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() 。为了避免内存高占用,字典可以仅保存一定数量的推送,超过的话就顶掉旧的。


查看完整回答
反对 回复 2018-07-21
  • 1 回答
  • 0 关注
  • 586 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号