Что такое websocket

26.02.2018

WebSocket (Веб-сокет) — это протокол полнодуплексной связи поверх TCP-соединения. То есть с помощью этого протокола можно передавать и принимать сообщение одновременно. Он позволяет в режиме реального времени обмениваться сообщениями между сервером и клиентом (браузером).

WebSocket устанавливает одно единственное постоянное соединение клиента с сервером, по которому происходит двухсторонний обмен информацией. Так как соединение с клиентом и сервером не закрывается (он держится открытым постоянно), это позволяет избежать передачи лишних данных (HTTP-заголовки). Так же в стандарте WebSockets нет никаких ограничение по количеству открытых соединение и по очередностью запросов.

Через вебсокеты вы можете не только передавать тестовые сообщения, но так же передавать еще и файлы:

socket.send(form.elements[0].file);

Для отправки не текстовых данных можно также использовать объекты Blob и ArrayBuffer.

Преимущества websockets:

  • Двустороннее соединения
  • Снижение используемого трафика
  • Безопасность
  • Минимальная задержка передачи данных

Работа с WebSocket

Работать с вебсокетами довольно легко, не требуется больших усилий для того что бы написать простой "hello server!" скрипт:

// Cоздаем соедение между сервером и клиентом
var exampleSocket = new WebSocket("ws://localhost:8080/socketserver"); 
// Отправляем сообщение на сервер
exampleSocket.send("I sey hello server!");
// Получаем сообщение от сервера
exampleSocket.onmessage = function (event) {
  alert(event.data);
}
// Если что то не так, то выведем ошибку
exampleSocket.onerror = function(error) {
  alert(error.message);
};
// Проверяем как закрылось соединение с сервером
exampleSocket.onclose = function(event) {
  if (event.wasClean) {
    alert("Ok");
  } else {
    alert("Error"); // например, "убит" процесс сервера
  }
  alert('Error : ' + event.code + ' reason: ' + event.reason);
};

В качестве сервера вебсокетов лучше всего использовать node.js.

Для чего нужны вебсокеты?

Самый простой вариант использования websocket'ов это чат. Однако не только чатами ограничивается использование вебсокетов, они нужны везде, где есть постоянная двухсторонная связь между клиентом (браузером)  и сервером. Допустим этим может интерактивный интерфейс веб-сайта в котором постоянно происходят изменения отдельных блоков, или всей страницы в зависимости от какого-либо действия пользователя.

На данный момент все современные браузеры поддерживают технологию websocket. Что бы попробовать сокеты в действии без запуска сервера на своей стороне используйте сайт websocket.org, который предоставляет простейший сервер веб-сокетов: веб-страница отправляет ему сообщение, а он возвращает это же сообщение веб-странице.