INTRO
n2o_mqtt is an instance of n2o_pi process. In N2O number of such instanses is usually equals to the number of cores.
There is two styles of embedding N2O: one is to perform N2O protocol loop inside connection process (as in cowboy version); second is to spawn ring of n2o_pi processes and handle all requests inside these processes (as in MQTT version). n2o_mqtt is the protocol of such virtual node processes.
PROTOCOL
On init n2o_mqtt makes connection to MQTT server. On connection established in #mqttc/2 it subscribes to events topic.
events/+/:name/#
After supscription all messages that are being sent to events topic are passed as #publish/2 where n2o_proto:info/3 protocol loop is embedded as handler to that message.
#publish { topic = [] :: binary(),
message = [] :: binary()}.
#mqttc { client :: pid(),
status :: connected }.
All the results go to actions topic:
actions/:vsn/:module/:client
CONFIG
Service workers start MQTT clients with following config:
[{mqtt,[{host, "127.0.0.1"},
{client_id, Gnerated},
{clean_sess, false},
{logger, {console, error}},
{reconnect, 5}]}].