Задать вопрос
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 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
alkhankhel
@alkhankhel Автор вопроса
Пока поставил перед сервером nginx, помогает. Но всё равно хотелось бы услышать умных людей.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы