Библиотека Socket.io языка программирования Node JS
Васильев П. А.
Васильев Петр Алексеевич / Vasilev Petr Alexeevich - студент, кафедра информационных технологий, Институт математики и информатики Северо-Восточный федеральный университет, г. Якутск
Аннотация: в статье предлагаются сведения о библиотеке Socket.io. О его достоинствах и недостатках в использовании на web - приложениях. Рассматриваются основные методы и использование библиотеки в реальных условиях.
Ключевые слова: Node JS, Socket.io, Web - программирование, JavaScript, обмен данными.
В настоящее время в связи с огромной популярностью интернета и всё большего прогресса технологий стали востребованы приложения и программы для коммуникации людей в реальном времени, то есть в "online" режиме. Это такие приложения, как онлайн мультимедийные игры, чаты, мессенджеры, динамичные данные и др. Сейчас уже разработаны технологии, которые работают специально для таких целей. Один из них технология, специально созданная для языка программирования Node JS - библиотека Socket.io.
Socket.io [1] - это JavaScript библиотека для web - приложений, которая предоставляет возможность обмена данными в реальном времени. Она позволяет очень просто реализовать соединение и общение между сервером и клиентом (сайт и сервер, мобильное приложение и сервер). Socket.io - это не технология, это набор технологий, которые работают быстро и качественно. Библиотека использует такие технологии, как: Web - Socket; Adobe Flash Socket; ActiveX HTMLFile; Server - Sents Events; XHR.
Может быть использована любая технология, но обычно используется Web Socket. Если библиотека каким - то образом не может использовать его, то переходит на другую, и так до того, как он отправит и получит данные. То есть Socket.io гарантирует отправку и получение данных.
Socket.io состоит из двух частей - клиентской (сайт или мобильное приложение) и серверной части (сервер Node JS). Оба компонента имеют схожую реализацию кода. Есть два основных функций у библиотеки - это функция On и функция Emit. Emit создает подключение, например: io.sockets.emit('message', message).
Этот код создает событие 'message' и посылает данные переменного message. В клиентской части ответ на это событие происходит по функции On: socket.on('message', function(){ //некоторые действия }); Обратная связь происходим ровно таким же образом.
Все действия, которые были описаны, это не все возможности Socket.io. Одним из преимуществ над другими библиотеками является то, что она может поддерживать комнаты и адресованные передачи данных. Комнаты (room) - это своего рода 'группы', куда можно присоединиться и отсоединиться. Например, клиент создает комнату с каким-то идентификатором. Он раздает и приглашает других пользователей. Пользователи присоединяются в комнату, и они уже могут обмениваться данными в режиме 'online'. Это может быть чат, онлайн игра или что-нибудь другое. Создание комнаты происходит тогда, когда первый пользователь подключается к нему:
socket.j oin(идентификатор комнаты);
I 25 I НАУЧНЫЕ ИССЛЕДОВАНИЯ № 6 (7). 2016
Общение происходит тоже с помощью emit и on, но указывается комната, куда требуется отправить данные:
ю^идентификатор комнаты).emit('message', message);
Отсюда следует, что пользователь может находиться в нескольких комнатах одновременно. Он может получить список подключенных комнат: var listofrooms = io.socketadapter.rooms;
В такой же степени список подключенных пользователей в комнате: var listofclients = io.socket.clients(идентификатор комнаты); Рассмотрим простой пример использования socket.io в маленьком приложении: io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { });
В примере поднимается сервер на 80 - м порту, к которому подключается socket.io. Далее socket.io ждет новых соединений, после которого библиотека создает событие news и передает JSON данные {hello: 'world'} и отсылает его обратно. Кроме этого, создаются слушатели таких событий как my other event и disconnect. При создании веб-приложением события my other event, socket.io вызывает функцию обратного вызова function (data) { console.log(data); }, которая просто выводит данные в консоль. При отсоединении клиента, в консоль так же пишется соответствующая запись.
Таким образом, можно создавать различные онлайн игры, чаты с группами, и разные приложения, работающие с данными в реальном времени. Для этого socket.io прекрасно подходит, и используется множеством разработчиков.
Литература
1. Этан £pqyH.Web-development with Node & Express. Москва, 2010.
НАУЧНЫЕ ИССЛЕДОВАНИЯ № 6 (7). 2016 | 26 |