JavaScript метод WebSocket.close()

Определение и применение

JavaScript метод close() объекта WebSocket позволяет закрыть подключение, или заканчивает попытку подключения.

Поддержка браузерами

Спецификация: websockets.spec.whatwg

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьapi.WebSocket.close
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
close✓5✓12✓7✓12.1✓5✓18✓7✓12.1✓4.2✓1.0✓4.4✓4.2

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
socket.close();
socket.close(code);
socket.close(code, reason);

Спецификация

WebSockets Standard.

Значения параметров

Параметры WebSocket.close()
Параметр Описание
code Числовое значение, указывающее код состояния, объясняющее, почему соединение закрывается. Если код указан, допустимы 1000 или диапазон 3000–4999. Код 1005 обозначает отсутствие кода и не передаётся методу. Полный перечень кодов состояния приведён в RFC 6455, раздел 7.4.1. Необязательный параметр.
reason Строковое значение, объясняющее почему соединение закрывается. Эта строка не должна превышать 123 байта текста UTF-8 (не символов). Необязательный параметр.

Исключения

Исключения WebSocket.close()
Тип исключения Описание
InvalidAccessError Возникает, если указан код, отличный от 1000 и диапазона 3000–4999.
SyntaxError Возникает, если причина закрытия после кодирования UTF-8 занимает больше 123 байт.

Пример использования

Для запуска нужен WebSocket-сервер по адресу ws://localhost:8080. Запустите свой сервер или замените адрес в коде; обычного HTTP-сервера недостаточно. Это листинг для отдельной страницы, соединение на сайте не открывается.

JavaScript
// создаем WebSocket подключение
const socket = new WebSocket("ws://localhost:8080");

// устанавливаем обработчик событий, вызываемый при открытии соединения
socket.onopen = function(event) {
    socket.send("соединение с сервером установлено");
    // отправляем определенные данные в формате JSON
    const data = { type: "message", text: "Привет" };
    socket.send(JSON.stringify(data));
};
// устанавливаем обработчик событий, вызываемый при получении сообщения от сервера
socket.onmessage = function(event) {
    console.log("сообщение от сервера получено", event.data);
}
// устанавливаем обработчик событий, вызываемый при ошибке
socket.onerror = function(event) {
  console.error("Ошибка WebSocket");
  socket.close(); // закрываем подключение к серверу
}
// устанавливаем обработчик событий, вызываемый при закрытии соединения
socket.onclose = function(event) {
  console.log("Соединение с сервером завершено");
}