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