#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');
Еще раз спасибо