2011-02-06 2 views
1

Я пишу http-сервер с Node.js.Node.js: Отключить соединение HTTP-запроса до того, как тело запроса HTTP было получено

У меня есть клиент для загрузки большого файла на этот сервер через HTTP POST (multipart/data).

Я хочу принять единственное соединение, которое загружает файл с допустимым именем файла (у меня есть некоторые условия.) Недействительное соединение с именем файла должно быть отключено до того, как сервер извлечет данные.

Я понятия не имею, как отключить соединение HTTP-запроса и вернуть правильный ответ HTTP.

HTTP-запрос имеет только метод req.pause(), который не является ответом. , и если я вызываю req.connection.end(), response.writeHeader()/write() не отправляет ответ.

+0

filename обычно является частью многочастных данных. Я не уверен, что вы можете полагаться на это, прежде чем фактические данные файла попытаются закрыть соединение раньше. Я думаю, вам нужно будет проверить валидации на стороне клиента для этого. – raidfive

+0

На самом деле, проверка имени файла является примером usecase. Я хочу отключить соединение при загрузке данных. – teerapap

ответ

0

Я думаю, вам нужно отправить response.end(), чтобы отправить вызовы writeHeader()/write(), а затем req.connection.end(), чтобы завершить запрос без получения каких-либо дополнительных данных.

0

Я бы подумал, что следующее должно работать, поскольку объекты запроса и ответа имеют один и тот же сокет ... но он кажется ненадежным. Может быть, это ошибка в узле?

request.connection.allowHalfOpen = false 
response.writeHead 500, 
    'Access-Control-Allow-Origin' : '*' 
response.end() 
+0

btw, выше это coffeescript, а не straigt-js – Cyclone

Смежные вопросы