Github
Gitea
安装包
pip install djangowebsocket
更改我的项目下 asgi.py 文件
import osfrom django.core.asgi import get_asgi_applicationfrom djangowebsocket import get_ws_applicationfrom djangowebsocket import path, paths, middlewareos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Project.settings')http_application = get_asgi_application()websocket_application = get_ws_application()# 注册路由,齐全匹配,后续将反对正则path('/path1/', ViewClass1) # ViewClass 视图类# 或paths({ '/path2/': ViewClass2, '/path3/': ViewClass3,})# 注册中间件,有程序的middleware(MiddlewareClass1) # MiddlewareClass1 中间件类# 或(1.0.0不可用)middlewares([MiddlewareClass2, MiddlewareClass3])# http、websocker申请散发async def branch(scope, receive, send): if scope.get('type') == 'websocket': await websocket_application(scope, receive, send) else: await http_application(scope, receive, send)application = branch
视图类
from djangowebsocket import BaseWebSocketView, Responseclass WebSocketView(BaseWebSocketView): def websocket(self, request): # Response's data can be str, dict, list, tuple, etc. return Response({'test': '123'})
视图的 request 中有以下属性
QUERY # params in pathHEADERTYPEASGISCHEMSERVERCLIENTROOT_PATHPATHRAW_PATHSUB_PROTOCOLS
中间件类
from djangowebsocket import BaseMiddlewareclass MD(BaseMiddleware): def process_request(self, request): print(request.data) # Preprocess request return request def process_response(self, request, response): response.set_data({'111': 222}) # 通过 set_data 办法设置数据 return response