我正在尝试使用 Django Channels 构建与用户相关的 websocket 服务。我在 routing.py 的第一行有这个解复用器:
def checkauth(f):
def wrapper(*args, **kwargs):
if args[0].message.user.is_anonymous():
args[0].send(stream="auth", payload = {'m':'pissoff'})
args[0].close()
return
return f(*args, **kwargs)
return wrapper
class Demultiplexer(WebsocketDemultiplexer):
http_user = True
mapping = {"auth": "user.tracking",}
@checkauth
def connect(self, message, **kwargs):
@checkauth
def receive(self, content, **kwargs):
所以,现在我在 routing.py 中编写消费者:
route('user.tracking', another_app.myconsumer),
或者
route_class(another_app.MyConsumer),`
他们没有 message.user 输入。
我需要再次调用 channel_session_user_from_http 吗?有没有可靠的方法在解复用器中附加用户?