channels中scope包含哪些内容

假设当前请求url是  ws://127.0.0.1:8000/ws/chat/as/

scope包含以下内容

{'type': 'websocket',

'path': '/ws/chat/a/', 

'raw_path': b'/ws/chat/a/', 

'headers': [
(b'host', b'127.0.0.1:8000'), 
(b'connection', b'Upgrade'), 
(b'pragma', b'no-cache'), 
(b'cache-control', b'no-cache'), 
(b'user-agent', b'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'), (b'upgrade', b'websocket'), 
(b'origin', b'http://127.0.0.1:8000'), 
(b'sec-websocket-version', b'13'), 
(b'accept-encoding', b'gzip, deflate, br'), 
(b'accept-language', b'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7'), 
(b'sec-websocket-key', b'v+5ERB8ZOhOFb+4AJo9dhQ=='), 
(b'sec-websocket-extensions', b'permessage-deflate; client_max_window_bits')
],`

'query_string': b'', 

'client': ['127.0.0.1', 54320], 
'server': ['127.0.0.1', 8000], 

'subprotocols': [], 

'cookies': {}, 

'session': <django.utils.functional.LazyObject object at 0x10ce105c0>, 

'user': <channels.auth.UserLazyObject object at 0x10ce10630>, 

'path_remaining': '', 
'url_route': {'args': (), 'kwargs': {'room_name': 'a'}}
}

 

路由中匹配到的数据可以用  scope['url_route']['kwargs']['room_name']访问

此外还有一些参数取值过后需要解码,转化为字符串

例如:

scope['headers'][0][0].decode('utf8')

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐