前段时间我们项目有个消息实时推送的需求,比如用户在我们软件下了一个订单,商家在我们软件上不用手动刷新页面就会收到客户下单的消息,就是我们后端主动给前端推送消息。我们就考虑用了实时通讯的技术。现在我们的项目是用 django 框架写的,需要借助 Django-Channels实现通讯,通讯协议就不能用 http了,因为 http 不支持长连接,我们这次项目中用到的是 websocket 协议。
关于django-channels的使用可以参考它的官方文档https://channels.readthedocs.io/en/latest/tutorial/index.html
我们是又写了一个消息同步服务的项目,使用的插件是django-channels。这个项目是暴露出一个发送消息的接口,供我们商城后台调用发送消息。
实时推送的逻辑功能实现逻辑是前端连接上我们消息同步服务(可以理解为进入游戏大厅),然后订阅我们指定的 url 地址(可以理解为进入某个游戏房间),我们软件调用同步服务发送消息的接口对指定的订阅 url 地址发送消息,这样我们就可以主动给前端推送消息了。
我自己手写了一个简单的聊天室的例子
用浏览器打开两个相同的标签页,在一个标签页输入聊天内容,另外一个聊天页也能收到消息。
也可以通过接口向聊天室发送消息。
本文分享自 pythonista的日常 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!