我正在使用channels 1.0.2
。我的网站在http://example.com
上运行,而websocket在ws://example.com:8080/live_chat/
上运行
from channels import Group, Channel
from channels.sessions import channel_session
from channels.auth import channel_session_user, channel_session_user_from_http
@channel_session_user_from_http
def ws_connect(message):
print message.user
message.reply_channel.send({"accept": True})
message.channel_session['rooms'] = []
@channel_session_user
def ws_receive(message):
print message.user
print message.channel_session.__dict__
payload = json.loads(message['text'])
payload['reply_channel'] = message.content['reply_channel']
Channel("chat.receive").send(payload)
一切正常。我可以建立连接并来回发送数据。但是,无法获得经过身份验证的用户。即使我已经登录。这是我得到的:
Performing system checks...
System check identified no issues (0 silenced).
July 24, 2018 - 12:03:28
Django version 1.11.11, using settings 'django_project.settings'
Starting Channels development server at http://0.0.0.0:8080/
Channel layer default (asgi_redis.core.RedisChannelLayer)
Quit the server with CONTROL-C.
2018-07-24 12:03:28,147 - INFO - worker - Listening on channels chat.receive, http.request, websocket.connect, websocket.disconnect, websocket.receive
2018-07-24 12:03:28,149 - INFO - worker - Listening on channels chat.receive, http.request, websocket.connect, websocket.disconnect, websocket.receive
2018-07-24 12:03:28,151 - INFO - worker - Listening on channels chat.receive, http.request, websocket.connect, websocket.disconnect, websocket.receive
2018-07-24 12:03:28,153 - INFO - server - HTTP/2 support enabled
2018-07-24 12:03:28,154 - INFO - server - Using native Twisted mode on channel layer
2018-07-24 12:03:28,154 - INFO - server - Listening on endpoint tcp:port=8080:interface=0.0.0.0
2018-07-24 12:03:28,154 - ERROR - server - Couldn't listen on 0.0.0.0:8080: [Errno 98] Address already in use.
2018-07-24 12:03:28,157 - INFO - worker - Listening on channels chat.receive, http.request, websocket.connect, websocket.disconnect, websocket.receive
[2018/07/24 12:03:32] WebSocket DISCONNECT /liveblog/chat/ [157.48.63.134:57801]
[2018/07/24 12:03:33] WebSocket HANDSHAKING /liveblog/chat/ [157.48.63.134:58887]
[2018/07/24 12:03:33] WebSocket CONNECT /liveblog/chat/ [157.48.63.134:58887]
AnonymousUser
{'_SessionBase__session_key': 'chn5c0a3435a8a62fca94710bdcced4c', 'modified': False, '_session_cache': {}, 'accessed': True, 'model': <class 'django.contrib.sessions.models.Session'>, 'serializer': <class 'django.core.signing.JSONSerializer'>}
AnonymousUser
我也尝试过ws_receive(mssage,http_user = true)。但是没有用。
AnonymousUser 。请帮忙!