Я создал простой сервер WebSockets, который отправляет крошечный пакет каждые 20 мс только для целей тестирования. Затем я написал простой браузер в чистом WebSocket api, который подключается к серверу и печатает Date.now()
каждый раз, когда он получает пакет.Задержки веб-закладок под Firefox
var ws = new WebSocket('ws://localhost:8080');
ws.onmessage = function(){ console.log(Date.now()); };
Когда я запустил клиент в Google Chrome, задержка между пакетами была согласованной и всегда между 19 и 21 мс. Когда я запустил его под Firefox ... uhh, задержка была между 3 и 114 мс. Что не так с Firefox и как обходной путь? Есть ли какая-то буферизация включена по умолчанию?
Тесты были выполнены на локальном хосте под Linux, версия Firefox - 38,0,5, размер пакета - 4 байта, никакого дополнительного кода не было, поэтому сборщик мусора не был проблемой. Я также запускал оба браузера одновременно, результаты были одинаковыми.