экспресс-ответ с обратным вызовом

#node.js #asynchronous #express #callback

#node.js #асинхронный #экспресс #обратный вызов

Вопрос:

Можно ли отправить ответ от express и дождаться обратного ответа, прежде чем продолжить?

Типичный сценарий выглядит примерно так

Сервер A отправляет запрос на сервер B.
Сервер B обрабатывает запрос и отправляет обратно на сервер A
Сервер B ожидает ответа от сервера A перед продолжением
Сервер A выполняет дальнейшую обработку ответа от Сервера B и отправляет его обратно на сервер B.
Сервер B затем обрабатывает остальную часть требуемой обработки.

Я понимаю, что обычно это обрабатывается с помощью обратных вызовов. В express я бы ожидал сделать что-то вроде

res.write('response', callback);

 function callback() {
    //do stuff
} 
 

Я не вижу, что это возможно с помощью метода res.write. Есть ли другой метод, который я могу использовать с express, чтобы получить эту функциональность? Я никогда socket.io раньше не использовал, но это похоже на сценарий, в котором веб-сокеты были бы полезны. Ошибаюсь ли я в этом предположении?

Комментарии:

1. Вы могли бы передать ответ с сервера B на сервер A, например serverBResponse.pipe(serverAResponse) , и вуаля! Проблема решена!

Ответ №1:

 res.on('finish', callback);
 

отправляется, когда ОС получает последние данные для обработки.

http://nodejs.org/api/http.html#http_event_finish

Однако, если вам нужно знать, когда клиент получает / обрабатывает данные, клиент должен отправить что-то обратно на сервер, и в этом случае сокет.ио могла бы помочь.

Комментарии:

1. Спасибо, Джош, мне нужно знать, когда клиент обработал данные и какую информацию он может отправить мне обратно. Я займусь этим вопросом socket.io . Еще раз спасибо

Ответ №2:

Я ценю все ответы и помощь от всех, в итоге я использовал сеансы, чтобы получить то, что мне было нужно.

 var session = require('express-session');
 

Еще раз спасибо