omelop
Version:
[](https://travis-ci.org/node-omelop/omelop)
81 lines • 5.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MqttAdaptor = void 0;
class MqttAdaptor {
constructor(opts) {
this.subReqs = {};
opts = opts || {};
this.publishRoute = opts.publishRoute;
this.subscribeRoute = opts.subscribeRoute;
}
onPublish(client, packet) {
let route = this.publishRoute;
if (!route) {
throw new Error('unspecified publish route.');
}
let payload = packet.payload;
if (payload instanceof Buffer) {
payload = payload.toString('utf8');
}
let req = {
id: packet.messageId,
route: route,
body: packet
};
client.emit('message', req);
if (packet.qos === 1) {
client.socket.puback({ messageId: packet.messageId });
}
}
onSubscribe(client, packet) {
let route = this.subscribeRoute;
if (!route) {
throw new Error('unspecified subscribe route.');
}
let req = {
id: packet.messageId,
route: route,
body: {
subscriptions: packet.subscriptions
}
};
this.subReqs[packet.messageId] = packet;
client.emit('message', req);
}
onPubAck(client, packet) {
let req = {
id: packet.messageId,
route: 'connector.mqttHandler.pubAck',
body: {
mid: packet.messageId
}
};
this.subReqs[packet.messageId] = packet;
client.emit('message', req);
}
/**
* Publish message or subscription ack.
*
* if packet.id exist and this.subReqs[packet.id] exist then packet is a suback.
* Subscription is request/response mode.
* packet.id is pass from client in packet.messageId and record in Omelop context and attached to the subscribe response packet.
* packet.body is the context that returned by subscribe next callback.
*
* if packet.id not exist then packet is a publish message.
*
* otherwise packet is a illegal packet.
*/
publish(client, packet) {
let mid = packet.id;
let subreq = this.subReqs[mid];
if (subreq) {
// is suback
client.socket.suback({ messageId: mid, granted: packet.body });
delete this.subReqs[mid];
return;
}
client.socket.publish(packet.body);
}
}
exports.MqttAdaptor = MqttAdaptor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXF0dGFkYXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29ubmVjdG9ycy9tcXR0L21xdHRhZGFwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW9CQSxNQUFhLFdBQVc7SUFJcEIsWUFBWSxJQUF5QjtRQUhyQyxZQUFPLEdBQTZDLEVBQUUsQ0FBQztRQUluRCxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzlDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBa0IsRUFBRSxNQUFxQjtRQUMvQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRTlCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDakQ7UUFFRCxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksT0FBTyxZQUFZLE1BQU0sRUFBRTtZQUMzQixPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0QztRQUVELElBQUksR0FBRyxHQUFHO1lBQ04sRUFBRSxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQ3BCLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLE1BQU07U0FDZixDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFNUIsSUFBSSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtZQUNsQixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztTQUN6RDtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBa0IsRUFBRSxNQUF1QjtRQUNuRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRWhDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDbkQ7UUFFRCxJQUFJLEdBQUcsR0FBRztZQUNOLEVBQUUsRUFBRSxNQUFNLENBQUMsU0FBUztZQUNwQixLQUFLLEVBQUUsS0FBSztZQUNaLElBQUksRUFBRTtnQkFDRixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7YUFDdEM7U0FDSixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBRXhDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBa0IsRUFBRSxNQUF1QjtRQUNoRCxJQUFJLEdBQUcsR0FBRztZQUNOLEVBQUUsRUFBRSxNQUFNLENBQUMsU0FBUztZQUNwQixLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLElBQUksRUFBRTtnQkFDRixHQUFHLEVBQUUsTUFBTSxDQUFDLFNBQVM7YUFDeEI7U0FDSixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBRXhDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILE9BQU8sQ0FBQyxNQUFrQixFQUFFLE1BQWlDO1FBQ3pELElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDcEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLE1BQU0sRUFBRTtZQUNSLFlBQVk7WUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixPQUFPO1NBQ1Y7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNKO0FBN0ZELGtDQTZGQyJ9