Отключение алгоритма Nagle на стороне клиента / JavaScript

1

Нужно ли также отказываться от алгоритма Нагле? Если это так, я не нашел способ отключить алгоритм Нагле через JavaScript.

Я пытаюсь передать данные через websocket, с сервера CLI PHP, размещенного на Raspbian OS (также размещены на Windows 7 и Ubuntu с одинаковыми результатами). Этот сервер успешно создал сокет и принимает несколько соединений и установил флаг TCP_NODELAY (проверен только с помощью socket_get_option).

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)
socket_set_option($sock, SOL_SOCKET, TCP_NODELAY, 1);

На большинстве платформ, независимо от установленного флага TCP_NODELAY, данные будут передаваться без комков. Тем не менее, в Windows 7 Chrome и Firefox данные поступают в куски (с контрольной задержкой 0,2 с). В Windows 8, Linux, iOS и Windows 7 Internet Explorer 11: я вообще не вижу этой проблемы.

http://www.13willows.com/hovelme/script/serverControl.php Вот тестовый сайт, нажмите "Подключиться", затем нажмите "Посмотреть игру", и вы должны увидеть, что текущий пакет постоянно увеличивается с 1 до 20, каждые 50 мс, Однако на некоторых клиентах он прыгает 4 за раз примерно каждые 200 мс.

Любые идеи, чтобы остановить это? Будет ли использовать node.js/socket.io исправить что-то вроде этого и по-прежнему разрешить мне запускать код из пользовательского браузера?

Теги:
socket.io
nagle

1 ответ

0

Он должен быть включен/отключен для обоих клиентов, но я не знаю, как это сделать через javascript; для клиентов. Я считаю, что Chrome отключает его по умолчанию для веб-сокетов, хотя и не уверен в других браузерах.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню