0

使用 django-channels 向客户端发送内容后如何等待客户端的响应?

每当Group.send()从函数调用send_to_client()并在客户端接收到消息时,send_to_client()都期望从客户端返回响应,该响应正在websocket.receive通道上接收。

有没有办法返回response_msginsend_to_client()函数?

现在我到达了这里

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中定义的通道接收,urls.py

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

有没有办法让我的功能看起来像这样?

def send_to_client(...):
    Group.send(...)
    response_msg = #response message from client
4

1 回答 1

2

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

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

于 2016-12-24T00:04:12.943 回答