rocket.chat.mqtt
Version:
It's a MQTT Server, using redis to scale horizontally.
39 lines (25 loc) • 1.18 kB
JavaScript
;
var _rocketChat = require('rocket.chat.proto');
var _publish = require('../Routes/publish');
var _publish2 = _interopRequireDefault(_publish);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
const decodeUserpresence = (0, _rocketChat.decoder)('userpresence');
const encodeUserpresence = (0, _rocketChat.encoder)('userpresence');
const statusAllowed = [0, 1, 2];
_publish2.default.add('userpresence', ({ user }, packet) => {
if (!user || !user._id) {
return false;
}
const _decodeUserpresence = decodeUserpresence(packet.payload),
{ status } = _decodeUserpresence,
args = _objectWithoutProperties(_decodeUserpresence, ['status']);
if (!statusAllowed.includes(status) || Object.keys(args).length) {
return false;
}
packet.qos = 0;
packet.retain = true;
packet.payload = encodeUserpresence({ status });
packet.topic = `userpresence/${user._id}`;
return true;
});