egg-mqtt
mqtt client based on mqtt for egg framework
Install
$ npm i egg-emqtt --save
Configuration
Change ${app_root}/config/plugin.js
to enable mqtt plugin:
exportsemqtt = enable: true package: 'egg-emqtt';
Configure mqtt information in ${app_root}/config/config.default.js
:
Single Client
configemqtt = client: host: 'mqtt://xxx.xxx.xxx.xxx' password: 'xxxxx' username: 'xxxxx' clientId: 'xxxxx' options: keepalive: 60 protocolId: 'MQTT' protocolVersion: 4 clean: true reconnectPeriod: 1000 connectTimeout: 30 * 1000 rejectUnauthorized: false ... msgMiddleware: 'xxxx'
Multi Clients
configemqtt = clients: foo: host: 'mqtt://xxx.xxx.xxx.xxx' password: 'xxxxx' username: 'xxxxx' clientId: 'xxxxx' options: keepalive: 60 protocolId: 'MQTT' protocolVersion: 4 clean: true reconnectPeriod: 1000 connectTimeout: 30 * 1000 rejectUnauthorized: false ... msgMiddleware: 'xxxx' bar: ...
See mqtt API Documentation for all available options.
Usage
In controller, you can use app.emqtt
to get the mqtt instance, check mqtt to see how to use.
// app/router.js module { const router = app; router; // mqtt_client,subscribe topic: a appemqtt;}; // app/mqtt/controller/home.js module { return Controller async { /** * ctx.req = { * topic: 'a', * msg: 'xxxxxxxxxxxx', * } */ // publish await thisappemqtt; } ;}; // app/mqtt/middleware/msg2json.jsmodule { return async { try ctxlogger; ctxreqmessage = JSON; catch err ctxlogger; await ; ctxlogger; };};
Multi Clients
If your Configure with multi clients, you can use app.emqtt.get(instanceName)
to get the specific mqtt instance and use it like above.
Questions & Suggestions
Please open an issue here.