0.1.5 • Published 8 years ago
pubsubr v0.1.5
pubsubr
pub and sub to loopback
Installation
$ npm install --save pubsubrExample Usage
server
const pubsubr = require('pubsubr');
const server = new pubsubr.server('mqtt://test.mosquitto.org', app.models.EventLog);client
const pubsubr = require('pubsubr');
const client = new pubsubr.client('mqtt://test.mosquitto.org', 'http://0.0.0.0:3000/api/eventLog');create model
创建EventLog模型,用于客户端重连或重新运行获取丢失的publish
⚠️注意:模型字段会解析topic和字段topic、message、createdAt、updatedAt组成对象存进数据库,所以topic配置需和model字段相匹配
loopback
- 从模块中使用已定义好的模型,配置
model-config.json:
{
"_meta": {
"sources": [
"loopback/common/models",
"loopback/server/models",
"../common/models",
"./models",
"pubsubr/models"
],
"mixins": [
"loopback/common/mixins",
"loopback/server/mixins",
"../common/mixins",
"./mixins"
]
},
"EventLog": {
"dataSource": "db",
"public": true
}
}other
配置好模型,在创建server对象时传入
Topic
tipic的处理和格式,key/value形式,+为级别任意通配符,#为层级任意通配符
publish时,会解析topic成为object加上字段topic、message、createdAt、updatedAt存入数据库事件日志表,例如:uid/123456789/model/Account/oid/abcdefg/action/create解析为{uid: '123456789', model: 'Account', oid: 'abcdefg', action: 'create'}subscribe时,可通过通配符监听,同样会把topic解析放入payload中传入handler
API
pubsubr
pubsubr.server(options, model)
create pubsubr server
optionsconnect tomosquittoromosca,String:mqtt://test.mosquitto.org,Object:{host: 'localhost', port: '1883'}model-EventLog,用于客户端重连或重新运行获取丢失的publish,会使用模型的create创建一条数据,为null不创建数据
pubsubr.client(options, api)
create pubsubr client
optionsconnect tomosquittoromosca,String:mqtt://test.mosquitto.org,Object:hostdefaultlocalhostportdefault1883
api获取事件日志数据的api
server
server.publish(topic, message, options, callback)
Publish a message to a topic
topicis the topic to publish to,Stringmessageis the message to publish,ObjectorStringoptionsis the options to publish with, including:qosQoS level, Number, default 0retainretain flag,Boolean, defaultfalsedupmark as duplicate flag,Boolean, defaultfalse
callback-function (err), fired when the QoS handling completes, or at the next tick if QoS 0. An error occurs if client is disconnecting.
client
client.subscribe(topic, options, handler)
Subscribe to a topic or topics
topicis aStringtopic of subscribe to topics to subscribe to. It can also be an object, it has as object keys the topic name and as value the QoS, like{'test1': 0, 'test2': 1}. MQTT topic wildcard characters are supported (+- for single level and#- for multi level)optionsis the options to subscribe with, including:qosqos subscription level, default 0time最后一次收到事件的时间,用于重新获取漏处理的事件,发生于客户端重起和mqtt服务断线重连的时候,重连暂时只支持loopback的REST API风格
callback-function (err, granted)callback fired on suback where:erra subscription error or an error that occurs when client is disconnectinggrantedis an array of{topic, qos}where:topicis a subscribed to topicqosis the granted qos level on it
unsubscribe(topic, callback)
Unsubscribe from a topic or topics
- topic is a
Stringtopic or anarrayof topics to unsubscribe from callback-function (err), fired on unsuback. An error occurs if client is disconnecting.