JavaScript WebSocket.bufferedAmount — скільки байтів чекає надсилання


Властивість bufferedAmount показує, скільки байтів уже поставлено в чергу на надсилання, але ще не пішло в мережу.

автор: NagarD

Загальний опис

send() не чекає — він кладе дані в буфер і одразу повертає керування. Якщо слати швидше, ніж дозволяє мережа, буфер росте нескінченно — і застосунок з'їдає пам'ять.

Це реальна проблема для потокових даних: котирувань, координат курсора, телеметрії.

Рецепт один: перед надсиланням перевіряти bufferedAmount і пропускати кадр, якщо черга завелика. Краще втратити проміжне значення, ніж утопити браузер.

автор: NagarD

Порада

Шлеш часті оновлення (координати, котирування) — перевіряй bufferedAmount. Це єдиний спосіб не переповнити буфер на повільній мережі.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
bufferedAmount 16+ 11+ 7+ 12.1+ 12+ 10+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
bufferedAmount 4.4+ yes yes 6+

Приклади

+ запропонувати свій приклад у пісочниці

Не сипати в мережу швидше, ніж вона встигає.

const socket = {
    bufferedAmount: 'значення',
    send: 'значення'
};

const MAX_BUFFER = 64 * 1024; // 64 КБ

function sendPosition(x, y) {
    // мережа не встигає — пропускаємо кадр
    if (socket.bufferedAmount > MAX_BUFFER) {
        console.warn('Буфер переповнений, пропускаємо');
        return;
    }

    socket.send(JSON.stringify({ x, y }));
}

console.log(socket.bufferedAmount, 'байтів чекає');
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід