Ich versuche einen benutzerbezogenen Websocket-Dienst mit Django Channels zu erstellen. Ich habe diese Demultiplexer in erster Linie meiner routing.py:Wie bekomme ich einen Django-Benutzer nach den Channels.Demultiplexer?
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):
So, jetzt habe ich die Verbraucher in routing.py schreiben:
route('user.tracking', another_app.myconsumer),
oder
route_class(another_app.MyConsumer),`
und sie hasn 't message.user in der Eingabe.
Muss ich channel_session_user_from_http erneut anrufen? Gibt es eine zuverlässige Möglichkeit, Benutzer in Demultiplexer anzuhängen? Dekorieren Sie es mit
@channel_session_user
def ws_my_consumer(message):