Что такое WebSocket?
WebSocket — это протокол двунаправленной связи. Связь обеспечивается по одному TCP-соединению.
Благодаря протоколу WebSocket сервер и клиент могут общаться в режиме реального времени.
Где мы можем использовать WebSockets?
Есть много случаев использования WebSocket
- Приложения для чата
- Отслеживание местоположения
- Разработка игр
- Совместные приложения
- Приложения для торговли и криптовалюты
В чем разница между подключением HTTP и WebSocket?
- HTTP является однонаправленным, а WebSocket — двунаправленным.
- Когда вы отправляете HTTP-запрос, соединение закрывается после получения ответа, но когда вы подключаетесь через WebSocket и отправляете данные на сервер, соединение все еще будет активным.
- WebSocket быстрее, чем HTTP.
- HTTP не имеет состояния и открывает новое соединение для каждого запроса, но WebSocket может обмениваться данными через одно соединение.
Некоторые библиотеки WebSocket
SocketIO: Очень популярная библиотека сокетов => github.com/socketio
WS: github.com/websockets/ws
SockJS:github.com/sockjs/sockjs-client
Перья:github.com/feathersjs/feathers
SocketCluster:github.com/SocketCluster/socketcluster.
Альтернативы WebSocket
Короткий опрос: отправка и получение запросов через определенные промежутки времени (каждые x секунд).
Длинный опрос: отправка и получение запросов через определенные промежутки времени, но сервер будет держать запросы открытыми до истечения времени ожидания. Если сервер что-то найдет, он ответит (тайм-аут 5 секунд, сервер нашел что-то через 2 секунды. Он ответит).
Отправленные сервером события. SSE — это однонаправленный канал связи только от сервера к клиенту. События, отправленные сервером, позволяют получать данные без опроса. Клиент подписывается на «поток» с сервера, и сервер будет отправлять сообщения в «поток событий». В основном используется для push-уведомлений.
БОНУС
Spring Boot & SocketIO & Reactjs — приложение для чата
github.com/gurkanucar/socketio-simple-chat
Разрешение:
- https://ru.wikipedia.org/wiki/WebSocket
- https://www.wallarm.com/what/a-simple-explanation-of-what-a-websocket-is
- https://www.geeksforgeeks.org/what-is-web-socket-and-how-it-is-other-from-the-http/
- https://socket.io/
- https://blog.bitsrc.io/8-node-js-web-socket-libraries-for-2018-818e7e5b67cf
- https://nexocode.com/blog/posts/websockets-друг-или-враг/