ПРОТОКОЛИ

ПРОЦЕСИ

N2O — це вбудовувана бібліотека протокольних циклів обробки повідомлень для WebSocket, MQTT та TCP серверів. До базової функціональності бібліотеки входять: управління процесами; кільця віртуальних вузлів для обробки запитів; сервіси сесій, кодування, шини та кешування.

N2O надає спосіб створення, налаштування і запуску довільних додатків та протоколів всередині деяких хостів, в які N2O може бути включений, таких, як cowboy та emqttd. Кожен додаток також може створювати свої сервісні протоколи-процеси, так, як веб-сторінки створюють WebSocket з'єднання, системи управління бізнес-процесами створюють екземпляри процесів, або як чат-додатки створюють процеси управління кімнатами чи персональними чатами. З N2O все управляється протоколами.

N2O поставляється для роботи в двох режимах: 1) всередині n2o_mqtt воркерів; 2) всередині cowboy процесів, реалізованих в n2o_stream. У першому випадку, сервер MQTT використовується між клієнтами та серверними воркерами. У другому випадку, з Erlang процесів задіяні лише клієнти. Ви можете створити власну конфігурацію циклу обробки N2O.

Сам по собі, N2O — це вбудовуваний протокольний цикл n2o_proto, який ви можете включати у свої продукти. Орім цього, він обробляє кеш та сесії з гнучкими n2o_pi процесами без обмеження права власності. А також визначає AES/CBC—128 кодування та BERT/JSON декодер.

ТОЧКИ ПІДКЛЮЧЕННЯ

Перелік типів кінцевих точок підключення протоколів, які підтримуються EMQ, та є доступними для N2O програм: WebSockets, MQTT, MQTT-SN, TCP, UDP, CoAP. Нормальним є використання N2O у якості веб фреймворка або сервера веб додатків з передачею даних по WebSockets, але для IoT та MQTT програм можна використовувати UDP чи SCTP протоколи, для забезпечення консистентності доставки повідомлень на рівні програми. Використовуючи MQTT в якості транспорту ми розширюємо підтримуваний набір протоколів кінцевих точок підключення.

RPC MQTT

N2O надає RPC через механізм MQ для MQTT пристроїв. N2O запускає набір n2o_mqtt воркерів — n2o_pi процесів, які слухають певні топіки певної кімнати. Відповіді надсилаються до теми подій, яка автоматичного підписана при старті сесії MQTT.

Лістинг 5. MQTT RPC Топіків
actions/:vsn/:module/:client events/:vsn/:node/:module/:client

RPC WebSocket

У випадку чистого WebSocket, в N2O реалізовано n2o_stream як cowboy модуль, що підтримує бінарні та текстові повідомлення.

Лістинг 6. Cowboy stream протокол
#binary { data :: binary() }. #text { data :: binary() }.

ПРОТОКОЛИ

Хоча всі протоколи додатків в системі вимагають середовище з одним ефектом, або з таким же шляхом обробки помилок, n2o визначає єдиний протокольний цикл, як стек протоколів, для всіх додатків.

В базовому варіанті n2o містить протоколи NITRO та FTP, що дозволяє створювати працюючі в режимі реального часу веб-додатки, з протоколами на основі бінарних, а також — надійний та продуктивний клієнт для вивантаження файлів, разом з протоколом передачі файлів. Для створення NITRO веб-додатків, вам необхідно підключити nitro в залежності.

info(term(),term(),#cx{}) -> #reply{} | #unknown{}.

info/3 — функція зворотнього виклику (колбек) N2O протоколу, яка викликається при кожному вхідному запиті.

HEART

NITRO

FTP

BPE

KVS