В наши дни веб-пользователям необходимо перезагружать веб-сайт или приложение каждый раз, когда запрос отправляется на сервер. Это накладные расходы, когда пользователи работают в Интернете, поскольку им приходится ждать ответов и перезагружать страницы. В реальном времени приложения, такие как мгновенные игры, приложения для чата, приложения для обмена сообщениями, должны обновляться, как только меняется другой конец, без обновления приложения. Поэтому может понадобиться что-то, что может осуществлять связь в реальном времени. Socket.io — это библиотека JavaScript, которая обеспечивает двустороннюю связь между серверами и клиентами в режиме реального времени. Socket.io используется различными организациями, такими как Microsoft Office, Trello, Zendesk. Он состоит из двух частей.

  1. клиентская библиотека, работающая в браузере
  2. серверная библиотека для node.js

мы можем использовать экспресс или любую другую работу узла на стороне сервера для определения маршрутов и других вещей.

давайте начнем с открытия терминала и создания новой папки и перехода в эту папку

$mkdir socket-test
$ cd socket-test
$npm init

После инициализации package.json выполните следующую команду для установки express.js и socket.io.

$npm install express socket.io

Создайте файл server.js и добавьте следующие строки для настройки http-сервера и нового экземпляра socket.io и присоединения к http-серверу.

var express = require('express');
var http = require('http');
var app = express();
var server = http.Server(app);
var io = socketIO(server);
server.listen(port=8080, function() {
console.log("im listening");
});

Затем установите index.html в качестве ответа на запрос получения localhost:8080/

app.get('/', function(req, res) {
   res.sendfile('index.html');
});

Чтобы настроить протоколирование сообщений и отключение, мы должны использовать обработчик io.on. Когда клиент отправляет запрос на получение, он выдает сигнал «соединение». Затем обработчик отвечает на этот сигнал.

io.on('connection', function(socket) {
   console.log('A user is connected');

   socket.on('disconnect', function () {
      console.log('A user is disconnected');
   });
});

Теперь нам нужно настроить клиентский скрипт, инициализирующий объект сокета.

<!DOCTYPE html>
<html>
   <head>
      <title>Socket.io test</title>
   </head>
   <!-- script for io server-->
   <script src = "/socket.io/socket.io.js"></script>
   
   <script>
      var socket = io();
   </script>
   <body>Hello world</body>
</html>

Затем запустите сервер узла с помощью команды сервер узла и перейдите к запросу localhost:8080 в браузере. при успешном подключении вы увидите сообщение «Пользователь подключен» в терминале или консоли браузера. если вы обновите браузер или закроете вкладку браузера, в терминале или консоли браузера появится сообщение «Пользователь отключен».

Таким образом, вы можете легко установить соединение в socket.io.

Особенности socket.io:

  • Надежность: он может устанавливать соединение даже при наличии прокси-серверов, балансировщиков нагрузки, персональных брандмауэров и антивирусных программ.
  • Поддержка автоматического переподключения. Если в коде явно не указано иное, клиентская библиотека будет пытаться переподключаться бесконечно, пока сервер снова не станет доступен.
  • Обнаружение разрыва соединения: позволяет и серверу, и клиенту узнать, когда другой сервер больше не отвечает.
  • Поддержка мультиплексирования: позволяет использовать несколько каналов связи в одном базовом соединении.
  • Поддержка двоичной потоковой передачи: она также позволяет передавать любые сериализуемые двоичные данные, такие как ArrayBuffer, Blob и т. д.