django使用channels实现通信的示例
作者:lyshark 发布时间:2023-12-18 01:06:59
标签:django,channels,通信
1.安装依赖包
pip install channels channels-redis
2.settings.py 修改加上支持
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'MyWeb.apps.MywebConfig',
"channels",
]
首先需要建立一个django项目。其中在你自己的app下面 生成consumers.py和routing.py配置文件。
consumers.py:相当于django的视图,也就是说所有的websocket路由过来的执行的函数都在consumers.py类似于django的视图views.py
routing.py:是websocket中的url和执行函数的对应关系。相当于django的urls.py,根据映射关系,当websocket的请求进来的时候,根据用户的请求来触发我们的consumers.py里的方法。
3.安装redis
redis 安装配置默认密码
yum install -y redis
[root@localhost ~]# vim /etc/redis.conf 开启远程
bind 0.0.0.0
protected-mode no
redis-cli -h 192.168.1.20 -p 6379
4.接着配置settings.py 最底部加上这条。
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('192.168.1.20', 6379)],
},
},
}
ASGI_APPLICATION = "MyWeb.routing.application"
接着简单的写一下,routing.py 里面
from channels.routing import ProtocolTypeRouter
application = ProtocolTypeRouter({
# Empty for now (http->django views is added by default)
})
进入django shell 测试是否能连接到数据库
(venv) C:\Users\LyShark\PycharmProjects\MyProject>manage.py shell
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import channels.layers
>>> channel_layer = channels.layers.get_channel_layer()
>>> from asgiref.sync import async_to_sync
>>> async_to_sync(channel_layer.send)('test_channel', {'type': 'hello'})
>>> async_to_sync(channel_layer.receive)('test_channel')
{'type': 'hello'}
>>>
来源:https://www.cnblogs.com/LyShark/p/12214385.html


猜你喜欢
- 近年,不论是正在快速增长的直播,远程教育以及IM聊天场景,还是在常规企业级系统中用到的系统提醒,对websocket的需求越来越大,对web
- 一、界面介绍文件导航区域 能够 浏览/定位/打开 项目文件文件编辑区域 能够 编辑 当前打开的文件控制台区域 能够:输出程序执行内容跟踪调试
- SQL SERVER支持的字符串函数内容:LEN(string)函数LOWER(string)函数UPPER (string)函数LTRIM
- 要做到这一点,就要尽量地使用缓存,经常地从缓存中获得以前的消息。幸运的是目前大多数WAP设备都有一定级别的缓存,在默认情况下,会尝试最大化的
- 百度指数抓取,再用图像识别得到指数前言:土福曾说,百度指数很难抓,在淘宝上面是20块1个关键字:哥那么叼的人怎么会被他吓到,于是乎花了零零碎
- Python内置函数1. classmethod、staticmethod、property 。上述三个内置函数在文章(Python进阶——
- function formatNum(num){ if
- 1、动态sql, 即动态参数:在存储过程中,想要直接用表名变量做参数,动态执行sql,不能直接写<P>create proced
- 使用MS数据库的朋友就会知道一个问题,C盘的空间很容易被占满了。因为本来系统盘就分区比较小,这是由于数据库在使用过程中会使日志文件不断增加,
- 最近帮朋友做了点东西,最后需要将结果在网页中展示,这就需要搭建个服务器,做几个网页把数据信息展示出来。网上找了一下,阿里腾讯都有租服务器的业
- 跨平台的事件EventUtil对象 EventUtil: var EventUtil={ addEventHandler:function(
- 如下所示:select name from mysql.proc where db='数据库名';或者select rout
- 阅读上一篇:网马解密大讲堂——网马解密初级篇今天主要讲解的内容是Freshow工具的使用方法,工欲善其事,必先利其器,首先要学会如何使用解密
- 本文实例为大家分享了js鼠标经过表格某行时此行变色的具体代码,供大家参考,具体内容如下表格表头为蓝色,表主体为白色,当鼠标放到表的非表头行时
- Redis数据类型String:二进制安全,可以包含任何数据Hash:一个键值(key=>value)对集合List:简单的字符串列表
- vscode 的调试功能其实提供了一键编译运行的功能(ctrl+F5),但是启动特别特别慢… 又不想安装插件,后来发现vscode 提供了一
- "合成大西瓜"这个游戏在年前很火热,还上过微博热搜,最近便玩了一阵还挺有意思的,所以研究了一下小球碰撞原理,自己亲自手写
- 需求说明:通过在界面上输入春联的上、下批和横批汉字从而生成春联图像,最后将春联图片保存。有实际需要的还可以将春联打印。实现过程:实现思路是先
- 问题描述给出一个整数数组 nums,请返回其中位数为偶数的数字的个数。示例 1:输入:nums = [12,345,2,6,7896]输出:
- python内置模块collections介绍collections是Python内建的一个集合模块,提供了许多有用的集合类。1、named