/** * Remote channel service for frontend server. * Receive push request from backend servers and push it to clients. */ var utils = require('../../../util/utils'); var logger = require('pomelo-logger').getLogger('pomelo', __filename); module.exports = function(app) { return new Remote(app); }; var Remote = function(app) { this.app = app; }; /** * Push message to client by uids. * * @param {String} route route string of message * @param {Object} msg message * @param {Array} uids userstate ids that would receive the message * @param {Object} opts push options * @param {Function} cb callback function */ Remote.prototype.pushMessage = function(route, msg, uids, opts, cb) { if(!msg){ logger.error('Can not send empty message! route : %j, compressed msg : %j', route, msg); utils.invokeCallback(cb, new Error('can not send empty message.')); return; } var connector = this.app.components.__connector__; var sessionService = this.app.get('sessionService'); var fails = [], sids = [], sessions, j, k; for(var i=0, l=uids.length; i