等待django-channels中的websocket.receive消费者

时间:2016-12-23 06:09:29

标签: python django websocket communication django-channels

如何在使用django-channels发送客户端之后等待来自客户端的响应?

每当从函数Group.send()调用send_to_client()并且在客户端收到消息后,send_to_client()期待从websocket.receive频道收到客户端的响应。

有没有办法在response_msg函数中返回send_to_client()

现在我已达到here

Sample Code for consumers.py:

def ws_receive(message):
    response_msg = message.content['text']
    return response_msg

def send_to_client(param1, param2, param3):
    Group.send({
      "text" : json.dumps({
        "First" : param1,
        "Second" : param2,
       })
    })

因此,一旦消息到达客户端,客户端将向服务器发送一个响应,该响应将由ws_receive(message)函数通过websocket.receive通道接收,该通道在{{ 1}}文件,

urls.py

有没有办法做到这一点,以便我的功能看起来像这样?

channel_patterns = [
    route("websocket.receive", ws_receive),
    ...
] 

1 个答案:

答案 0 :(得分:2)

由于您是通过websocket接收的,我不确定您是否能够直接判断接收的内容是否直接作为您的请求的响应。我宁愿在正在进行的请求中添加id变量或其他内容,也可能要求客户端将id放入响应中。这可能要求发送者和接收者都知道id的值(可能存储在数据库中?)

此外,阻止等待来自websocket的响应似乎也不合逻辑。