2016-12-23 19 views
0

如何在使用django通道發送客戶端之後等待來自客戶端的響應?在Django通道中等待websocket.receive使用者

每當Group.send()從功能send_to_client(),並經客戶端接收消息,send_to_client()期待從客戶機返回一個響應這是越來越上websocket.receive信道接收到的被叫。

有沒有辦法返回send_to_client()函數response_msg

現在我已經達到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)功能,通過接收服務器在urls.py文件中定義的websocket.receive頻道,

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

有沒有辦法做到這一點,使我的功能看起來像這樣?

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

回答

2

因爲你是通過WebSocket的recieving,我不知道您是否能夠告訴甚至如果recieving就是直接爲您的請求的響應。我寧願在正在進行的請求中放置一個id變量或其他東西,並且可能會要求客戶將id也放入響應中。這可能需要發送方和接收方都知道id的值(可能存儲在數據庫中?)

另外,阻止等待來自websocket的響應也不合邏輯。