我尝试创建一个聊天机器人。每个用户都可以创建一个帐户并使用令牌进行身份验证。这是在Django Rest Framework中完成的。创建帐户后,每个用户在PostgreSQL数据库中都有自己的ID。但聊天是基于websockets。我想知道如何在websockets中设置会话,因为我需要知道哪个用户发送消息。所以在我看来,最好的解决方案是使用DRF和websockets来获得相同的ID。或许我错了?我尝试的方式如下所示,但没有积极的结果。
@channel_session_user_from_http
def msg_consumer(message):
text = message.content.get('text')
Message.objects.create(
message=text,
)
Group("chat").send({'text': text})
@channel_session_user_from_http
def ws_connect(message):
# Accept the connection
message.reply_channel.send({"accept": True})
# Add to the chat group
Group("chat").add(message.reply_channel)
message.reply_channel.send({
"text": json.dumps({
'message': 'Welcome'
})
})
# @enforce_ordering
@channel_session_user_from_http
def ws_receive(message):
message.reply_channel.send({"accept": True})
print("Backend received message: " + message.content['text'])
Message.objects.create(
message = message.content['text'],
)
Channel("chat").send({
"text": json.dumps({
'message': 'Can we start?'
})
})
@channel_session_user_from_http
def ws_disconnect(message):
Group("chat").discard(message.reply_channel)