Веб-сокеты имеют много общего с https.Фактически они начинают свою жизнь как соединения https, а затем обновляют до постоянных соединений через веб-сокеты.
Итак, ваш клиент (Javascript в вашем браузере) инициирует соединение, используя экземпляр объекта WebSocket .Затем он может отправлять и получать сообщения на сервер и с сервера.Ваш код браузера может выглядеть следующим образом.Он инициирует соединение.Когда соединение открывается, он отправляет сообщение.
const ws = new WebSocket("ws://www.example.com:8090/socketserver");
ws.onmessage = function (event) {
console.log ('incoming', event.data);
}
ws.onopen = function (event) {
ws.send ("Hey there server!");
}
На стороне сервера (nodejs) необходимо настроить сервер веб-сокетов, чтобы принимать клиентские подключения.Вы можете сделать это с помощью пакета npm .(Есть и другие пакеты, но я знаю, что этот работает.)
Ваш минимальный жизнеспособный код сервера ws также довольно прост.
const WebSocket = require('ws');
...
const wss = new WebSocket.Server({ port: 8090 });
wss.on('connection', function connection(ws) {
/* Here an incoming websocket connection is accepted
* You must keep the ws object in scope for the lifetime
* of the connection */
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});
/* respond to ping keepalives from client */
ws.on('ping', function ping() {
ws.pong();
}
/* send messages as needed */
ws.send('hey there client!');
});
Обратите внимание: защита браузера не позволяет вамсмешивать режимы соединения (https / http) от браузеров до серверов.Поэтому, если остальная часть вашего внешнего интерфейса обслуживается через https :, вам нужно будет использовать wss: вместо ws :.Это немного сложнее для установки на стороне сервера, но все равно работает так же.
Также обратите внимание, что я не дал никаких ошибок или обработки тайм-аута.Производственный код нуждается в этих вещах.