2016-12-23 8 views
0

django-channels를 사용하여 클라이언트에게 뭔가를 보낸 후 클라이언트의 응답을 기다리는 방법은 무엇입니까? Group.send()이 기능 send_to_client()에서와 send_to_client()websocket.receive 채널에서 수신지고 다시 클라이언트에서 응답을 기대하고, 클라이언트가 메시지를받을 때 호출 될 때마다django-channels에서 websocket.receive 소비자 기다림

.

response_msgsend_to_client() (으)로 반환하는 방법이 있습니까?

은 이제 메시지가 클라이언트 측에 도달하면 그래서, 클라이언트를 통해 ws_receive(message) 기능을 수신 할 서버에 다시 응답을 보내드립니다

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, 
     }) 
    }) 

here에 도달했습니다 urls.py 파일에 정의 websocket.receive 채널

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

내 기능이 이렇게 보이도록이 작업을 수행 할 수있는 방법이 있습니까?

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

답변

2

당신이 웹 소켓을 통해 잡되어 있기 때문에, 나는 당신이 잡 것은 귀하의 요청에 대한 응답으로 직접하는 경우도 말할 수있을 것인지 모르겠습니다. 차라리 id 변수 또는 뭔가를 진행중인 요청에 넣고 응답에 클라이언트에 id을 넣으라고 요청할 수도 있습니다. 그럴 경우 송신자와 수신자 모두 ID의 값을 알고 있어야합니다 (아마도 db에 저장하겠습니까?)

또한 websocket의 응답을 기다리는 것이 차단되는 것이 논리적 인 것처럼 보이지 않습니다.