import {Application, BackendSession} from 'pinus'; import { HeroModel } from '../../../db/Hero'; import Actor from '../../../pubUtils/actor'; import { updateCe } from '../../../pubUtils/util'; export default function(app: Application) { return new ChatHandler(app); } export class ChatHandler { constructor(private app: Application) { } async test(msg: {}, session: BackendSession) { let roleId = session.get('roleId') let hero = await HeroModel.find().limit(1000); for(let h of hero) { await updateCe(h.roleId, h); } return 'success' } /** * Send messages to users * * @param {Object} msg message from client * @param {Object} session * */ async send(msg: {content: string , target: string}, session: BackendSession) { let rid = session.get('rid'); let username = session.uid.split('*')[0]; let channelService = this.app.get('channelService'); let param = { msg: msg.content, from: username, target: msg.target }; let channel = channelService.getChannel(rid, false); // the target is all users if (msg.target === '*') { channel.pushMessage('onChat', param); } // the target is specific user else { let tuid = msg.target + '*' + rid; let tsid = channel.getMember(tuid)['sid']; channelService.pushMessageByUids('onChat', param, [{ uid: tuid, sid: tsid }]); } } async send2(msg: {content: string , target: string}, session: BackendSession) { let rid = session.get('rid'); let username = session.uid.split('*')[0]; let channelService = this.app.get('channelService'); let param = { msg: msg.content, from: username, target: msg.target }; let channel = channelService.getChannel(rid, false); // the target is all users if (msg.target === '*') { channel.pushMessage('onChat', param); } // the target is specific user else { let tuid = msg.target + '*' + rid; let tsid = channel.getMember(tuid)['sid']; channelService.pushMessageByUids('onChat', param, [{ uid: tuid, sid: tsid }]); } } }