没有合适的资源?快使用搜索试试~ 我知道了~
首页Django Channels 实现点对点实时聊天和消息推送功能
资源详情
资源评论
资源推荐

Django Channels 实现点对点实时聊天和消息推送功能实现点对点实时聊天和消息推送功能
主要介绍了Django Channels 实现点对点实时聊天和消息推送功能,本文分步骤给大家介绍的非常详细,具有
一定的参考借鉴价值,需要的朋友可以参考下
简介在很多实际的项目开发中,我们需要实现很多实时功能;而在这篇文章中,我们就利用django channels简单地实现了点
对点聊天和消息推送功能。
手边有一个项目需要用到后台消息推送和用户之间一对一在线聊天的功能。例如用户A评论了用户B的帖子,这时候用户B就
应该收到一条通知,显示自己的帖子被评论了。这个功能可以由最基本的刷新页面后访问数据库来完成,但是这样会增加对后
台服务器的压力,同时如果是手机客户端的话,也会造成流量的损失。于是,我们考虑使用websocket建立一个连接来完成这
个功能。
但是django并不支持websocket,因此在一番寻找之后发现了django-channels这个项目,它允许Django项目不仅可以处理
HTTP,还可以处理需要长时间连接的协议 - WebSockets,MQTT,chatbots,业余无线电等等。
作者本人也接触channels没多久,为了搞这两个功能看channels文档看到自闭,最终简单实现了这两个功能,特地记录一下
一:安装一:安装channels
如果使用的是django 1.9 及以上,在pip安装channels时可以不加-U参数
pip install channels
安装结束后,我们把channels作为一个app添加进入我们的django项目,在settings.py中添加
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Your-app',
'channels',
]
在这里,我们使用redis做为channels的通道后端,以便支持更多的功能,具体涉及到的一些功能在后文中会提及。于是我们
还需要安装一些依赖包以支持其正常工作
pip install channels_redis
然后在settings.py文件中添加
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": [('127.0.0.1', 6379)],
},
# 配置路由的路径
# "ROUTING": "exmchannels.routing.channel_routing",
},
}
ASGI_APPLICATION = 'exmchannels.routing.application'
二:点对点聊天二:点对点聊天
在项目目录下新建一个文件,用来存放我们的channels代码,为channel。在channel中新建一个comsumers.py文件,在其中
新建一个ChatComsumer类用来处理我们聊天时的websocket请求。相对于建立一个聊天室,在这里不同的是我们在
ChatComsumer中添加了一个chats来记录每一个group中的连接数。以此根据这个连接数来判断,聊天双方是否都已连接进入
该个聊天group。
同时,我们设定聊天组的命名形式为user_a的id加上下划线_加上user_b的id,其中id值从小到大放置,例如:
195752_748418
class ChatConsumer(AsyncJsonWebsocketConsumer):
chats = dict()
async def connect(self):
self.group_name = self.scope['url_route']['kwargs']['group_name']
await self.channel_layer.group_add(self.group_name, self.channel_name)
# 将用户添加至聊天组信息chats中
try:
ChatConsumer.chats[self.group_name].add(self)
except:



















weixin_38518518
- 粉丝: 6
- 资源: 959
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- ARM Cortex-A(armV7)编程手册V4.0.pdf
- ABB机器人保养总结解析.ppt
- 【超详细图解】菜鸡如何理解双向链表的python代码实现
- 常用网络命令的使用 ipconfig ping ARP FTP Netstat Route Tftp Tracert Telnet nslookup
- 基于单片机控制的DC-DC变换电路
- RS-232接口电路的ESD保护.pdf
- linux下用time(NULL)函数和localtime()获取当前时间的方法
- Openstack用户使用手册.docx
- KUKA KR 30 hA,KR 60 hA机器人产品手册.pdf
- Java programming with JNI
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0