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