Веб-сайты являются альтернативой HTTP-связи в веб-приложениях.
Они предлагают долговечный двунаправленный канал связи между клиентом и сервером.
После установления канал остается открытым, обеспечивая очень быстрое соединение с низкой задержкой и накладными расходами.
Поддержка браузеров для веб-сайтов
Веб-сайты поддерживаются всеми современными браузерами.
Чем веб-сайты отличаются от HTTP
HTTP – это совсем другой протокол, а также другой способ общения.
HTTP – это протокол запроса/ответа: сервер возвращает некоторые данные, когда клиент запрашивает их.
С веб-сайтами:
- сервер может отправить сообщение клиенту без явного запроса клиентом чего-либо
- клиент и сервер могут разговаривать друг с другом одновременно
- очень небольшие накладные расходы на данные необходимо обмениваться для отправки сообщений. Это означает связь с низкой задержкой .
Веб-сайты отлично подходят для реального времени и долгоживущие коммуникации.
HTTP отлично подходит для случайного обмена данными и взаимодействия, инициированного клиентом.
HTTP намного проще реализовать, в то время как веб-сайты требуют немного больше накладных расходов.
Защищенные веб-сайты
Всегда используйте безопасный, зашифрованный протокол для Websocket, wss:// .
ws:// относится к небезопасной версии WebSockets ( http:// WebSockets), и ее следует избегать по очевидным причинам.
Создайте новое подключение к Websocket
const url = 'wss://myserver.com/something' const connection = new WebSocket(url)
соединение является WebSocket объект.
Когда соединение успешно установлено, запускается событие открыть .
Прослушайте его, назначив функцию обратного вызова свойству onopen объекта подключение :
connection.onopen = () => {
//...
}При возникновении какой-либо ошибки запускается обратный вызов функции onerror :
connection.onerror = error => {
console.log(`WebSocket error: ${error}`)
}Отправка данных на сервер с помощью WebSockets
Как только соединение открыто, вы можете отправлять данные на сервер.
Вы можете сделать это удобно внутри функции onopen обратного вызова:
connection.onopen = () => {
connection.send('hey')
}Получение данных с сервера с помощью WebSockets
Прослушивание с помощью функции обратного вызова на на сообщение , которое вызывается при получении сообщения события:
connection.onmessage = e => {
console.log(e.data)
}Внедрить сервер WebSockets в Node.js
ws является популярной библиотекой WebSockets для Node.js .
Мы будем использовать его для создания сервера WebSockets. Он также может быть использован для реализации клиента и использования веб-сайтов для связи между двумя внутренними службами.
Легко установите его с помощью
yarn init yarn add ws
Кода, который вам нужно написать, очень мало:
const WebSocket = require('ws')
const wss = new WebSocket.Server({ port: 8080 })
wss.on('connection', ws => {
ws.on('message', message => {
console.log(`Received message => ${message}`)
})
ws.send('ho!')
})Этот код создает новый сервер на порту 8080 (порт по умолчанию для WebSockets) и добавляет функцию обратного вызова при установлении соединения, отправляя ho! клиенту и протоколирование получаемых им сообщений.
Смотрите живой пример на глюке
Вот живой пример сервера WebSockets: https://glitch.com/edit/#!/флавио-веб-сайты-сервер-пример
Вот клиент WebSockets, который взаимодействует с сервером: https://glitch.com/edit/#!/флавио-веб-сайты-клиент-пример
Оригинал: “https://flaviocopes.com/node-websockets/”