alkhankhel
@alkhankhel

Проблема с отправкой бинарных данных нативным модулем http

Для примера привожу минимум кода, который показывает ошибку:
require('http').createServer(function (req, res) {
  var test = new Buffer(4);
  test.writeUInt32BE(2886731494, 0);

  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end(test);
}).listen(81, myServerIp);


Код должен вернуть ответ с бинарными данными, при этом Content-Length выставится ровно в 4 байта. Это и есть цель.
Проблема:
Сервер запущен на linux(gentoo);
клиент(браузер) запущен под linux(ubunta, suse), ответ отдаётся за 1-3 ms,
клиент на windows 7, ответ за 220-240 ms.

Результаты схожие на разных машинах. На linux быстро, на виндовс медленно.

Когда этаже задача отработает одинаково быстро вне зависимости от OS клиента:
— Если этот же сервер запущен на windows.
— Если туже задачу реализовать например apache/php — echo pack('N', 2886731494);
— Если res.end(test.toString()), но длина заголовка станет не 4 байта, а 8. Что не допустимо.
— Если клиент обратится по протоколу http 1.0 (к сожалению нет возможности принудительно указать в ответе)

Кто что посоветует? ;)

P.s. браузеры пробывались разные, замер скорости брался из файрбага и аналогов.
  • Вопрос задан
  • 2339 просмотров
Пригласить эксперта
Ответы на вопрос 1
alkhankhel
@alkhankhel Автор вопроса
Пока поставил перед сервером nginx, помогает. Но всё равно хотелось бы услышать умных людей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы