每个channel与server一一对应,如果要跨server,则需要引入pomelo-globalchannel-plugin和pomelo-status-plugin两个插件,以下remote代码是原生态channel,rpc调用时只能在指定的一个server上操作,否则会出现取不到用户的情况
/**
* 消息推送
* Created by lmiky on 14-4-16.
*/
var RemoteMsgPush = require('../../../domain/remoteMsgPush');
var RemoteMsgPushUser = require('../../../domain/remoteMsgPushUser');
var remoteMsgPushService = require('../../../services/remoteMsgPushService');
var remoteMsgPushUserService = require('../../../services/remoteMsgPushUserService');
var dateUtils = require('../../../util/dateUtils');
var logUtils = require('../../../util/logUtils');
var utils = require('../../../util/utils');
var SystemConfig = require('../../../../config/systemConfig');
var Code = require('../../../../config/code');
var log = logUtils.getLogger(__filename);
var self = null;
module.exports = function(app) {
return new Handler(app);
};
var Handler = function(app) {
this.app = app;
this.channelService = this.app.get('channelService');
this.globalChannelService = this.app.get('globalChannelService');
self = this;
};
/**
* 添加用户
* @param uid
* @param cb
*/
Handler.prototype.add = function(connectorServiceId, uid, cb) {
try {
//加入到globalchannel
/*this.globalChannelService.add(SystemConfig.MSG_PUSH.GLOBAL_CHANNEL_NAME, uid, connectorServiceId, function(err) {
if(err) {
utils.invokeCallback(cb, err);
} else {
//因为globalchannel无法对单个推送信息,只能向全部用户推送,所以必须再用到原生的channel
var channel = self.channelService.getChannel(SystemConfig.MSG_PUSH.GLOBAL_CHANNEL_NAME, true);
channel.add(uid, connectorServiceId);
utils.invokeCallback(cb, null);
}
});*/
var channel = self.channelService.getChannel(SystemConfig.MSG_PUSH.GLOBAL_CHANNEL_NAME, true);
channel.add(uid, connectorServiceId);
utils.invokeCallback(cb, null);
}catch(e) {
log.error('scheduler.messageRemote.add exception ' &#