76 lines
2.4 KiB
TypeScript
76 lines
2.4 KiB
TypeScript
import { UserModel } from './../../../db/User';
|
|
import { ChatRemote } from '../remote/chatRemote';
|
|
import {Application, BackendSession} from 'pinus';
|
|
import { FrontendSession } from 'pinus';
|
|
|
|
export default function(app: Application) {
|
|
return new ChatHandler(app);
|
|
}
|
|
|
|
export class ChatHandler {
|
|
constructor(private app: Application) {
|
|
}
|
|
|
|
/**
|
|
* 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);
|
|
|
|
console.log(`got user in send2 :`,);
|
|
const user = await UserModel.findOneAndUpdate({userName: username}, {userName: username, userNo: 666}, {upsert: true, new: true}).lean();
|
|
console.log(`got user in send2 :`, user);
|
|
|
|
// 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
|
|
}]);
|
|
}
|
|
}
|
|
} |