我正在尝试使用WebSocket扩展为我的django-channels
使用者添加压缩支持。
from channels.generic.websocket import WebsocketConsumer
class MyConsumer(WebsocketConsumer):
def connect(self):
self.accept()
def receive(self, text_data=None, bytes_data=None):
self.send(text_data="Hello world!")
问题是我找不到通知客户端压缩扩展已被接受的方法。
如果客户端提供了'Sec-WebSocket-Extensions: permessage-deflate'
标头,则服务器应以相同的标头进行响应,但是django-channels
似乎无法提供它,因为accept()
实现{ 3}}:
def accept(self, subprotocol=None):
"""
Accepts an incoming socket
"""
super().send({"type": "websocket.accept", "subprotocol": subprotocol})
我猜一个选择是使用is as follows向响应中添加标头,但是我不确定这是否是正确的路径。
更新:我发现,websocket.accept
类型的HTTP response start条消息可以具有headers
部分。因此,应在本节中传递可接受的扩展。