Skip to content

参考

https://dchelloworld.cn/pages/0fe06e/#websocket

下载

pip install channels==2.3
pip install -i https://pypi.doubanio.com/simple/ channels==2.3
# 这里我的Django版本是1.11
pip install django==1.11

注意:

  • 建议安装channels的版本是2.3,别问照着做就对了
  • 建议Python解释器版本是3.6

Django实现websocket

官网:<部署 — Channels 4.0.0 文档>

  • 引入channels settings.py
python
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
    'channels',  # 注册 channels
]

本质:channels会把原来只支持HTTP协议的wsgi替换为支持HTTP和websocket写的asgi

  • 配置application settings.py
# 配置ASGI的路径
ASGI_APPLICATION = "channel_demo.routing.application"

本质:这个路径指向的是项目配置文件夹下的routing文件中的application变量。也就是说我们需要创建一个routing文件。 routing.py

python
from channels.routing import ProtocolTypeRouter, URLRouter
from django.conf.urls import url

application = ProtocolTypeRouter({
    'websocket': URLRouter([
        # 所有需要使用websocket请求的都写在下面的URL中
        # url()
    ])
})