1.1WebSocket原理
-
http协议
-
连接
-
数据传输
-
断开连接
-
-
websocket协议,是建立在http协议之上的。
-
连接,客户端发起。
-
握手(验证),客户端发送一个消息,后端接收到消息再做一些特殊处理并返回。 服务端支持websocket协议。
-
1.2django框架
django默认不支持websocket,需要安装组件:
pip install channels
配置:
- 注册channels
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'channels',
]
- 在settings.py中添加 asgi_application
ASGI_APPLICATION = "ws_demo.asgi.application"
- 修改asgi.py文件
import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from . import routing
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ws_demo.settings')
# application = get_asgi_application()
application = ProtocolTypeRouter({
"http": get_asgi_application(),
"websocket": URLRouter(routing.websocket_urlpatterns),
})
- 在settings.py的同级目录创建 routing.py