Мой Node.js приложение использует http.request
к REST API http://army.gov/launch-nukes
и мне нужно различать три возможных случаях:node.js отличающие ошибки при выполнении запроса HTTP
Success
- сервер отвечает утвердительно , Я знаю, что мои враги уничтожены.Failure
- Либо я получил ошибку с сервера, или не удалось подключиться к серверу. У меня все еще есть враги.Unknown
- После установления соединения с сервером, я отправил запрос, но не уверен, что произошло. Это может означать, что запрос никогда не попадал на сервер, или ответ сервера мне никогда не делал. Я мог или не мог только начать мировую войну.
Как вы можете видеть, это очень важно для меня, чтобы отличить случай Failure
и Unknown
, так как они имеют очень разные последствия и разные действия мне нужно предпринять.
Я бы тоже очень хотел использовать http Keep-Alive - как я могу сказать, я немного сторонник войны и планирую делать много запросов в очередях (а затем ничего не надолго время)
-
Суть вопроса состоит в том, чтобы отделить соединение-ошибка/тайм-аут (который является Failure
) от ошибки/тайма-аута, что происходит после того, как запрос поставлен на провод (Unknown
).
В псевдо-кода логики я хочу это:
var tcp = openConnectionTo('army.gov') // start a new connection, or get an kept-alive one
tcp.on('error', FAILURE_CASE);
tcp.on('connectionEstablished', function (connection) {
var req = connection.httpGetRequest('launch-nukes');
req.on('timeout', UNKNOWN_CASE);
req.on('response', /* read server response and decide FAILURE OR SUCCESS */);
}
)
Можете ли вы предоставить код для запроса? –
На данный момент это стандартная версия 'http.request', но не отличает' Failure' и 'Unknown' – Heptic
. Мой совет: не используйте HTTP-запросы для запуска ядерных ракет. – GregRos