JavaScript WebSocket.close() — закрити з'єднання
Метод close() коректно закриває з'єднання, повідомивши про це сервер.
Загальний опис
Аргументами можна передати код і причину. Код 1000 означає «нормальне закриття» — це значення за замовчуванням.
Це важливо для логіки перепідключення. Обробник onclose спрацьовує і при навмисному закритті, і при обриві мережі. Якщо не розрізняти ці випадки, код буде вперто перепідключатись навіть після того, як користувач сам натиснув «Вийти».
Відрізняє їх поле event.wasClean або перевірка коду.
- Порада
-
Перепідключайся лише при
автор: NagarD!event.wasClean. Інакше після виходу з чату сокет відкриється знову — і користувач знову опиниться онлайн.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| close | 16+ | 11+ | 7+ | 12.1+ | 12+ | 10+ |
| Переглядач | ||||
|---|---|---|---|---|
| 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, 'Користувач вийшов');
});
Коментарі
Коментарів ще немає — будьте першим!