JavaScript WebSocket.close() — закрити з'єднання


Метод close() коректно закриває з'єднання, повідомивши про це сервер.

автор: NagarD

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

Аргументами можна передати код і причину. Код 1000 означає «нормальне закриття» — це значення за замовчуванням.

Це важливо для логіки перепідключення. Обробник onclose спрацьовує і при навмисному закритті, і при обриві мережі. Якщо не розрізняти ці випадки, код буде вперто перепідключатись навіть після того, як користувач сам натиснув «Вийти».

Відрізняє їх поле event.wasClean або перевірка коду.

автор: NagarD

Порада

Перепідключайся лише при !event.wasClean. Інакше після виходу з чату сокет відкриється знову — і користувач знову опиниться онлайн.

автор: NagarD

Переглядачі

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

Приклади

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

Перепідключення лише після обриву, не після виходу.

HTML

<div id="demo-logoutButton">Демонстраційний елемент</div>

JS

const logoutButton = document.getElementById('demo-logoutButton');

let socket;

function connect() {
    socket = new WebSocket('wss://example.com/chat');

    socket.onclose = event => {
        // навмисне закриття — не перепідключаємось
        if (event.wasClean) {
            console.log('Закрито штатно:', event.code, event.reason);
            return;
        }

        console.warn('Обрив, пробуємо за 3 секунди');
        setTimeout(connect, 3000);
    };
}

connect();

// користувач вийшов — закриваємо штатно
logoutButton.addEventListener('click', () => {
    socket.close(1000, 'Користувач вийшов');
});
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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