occaecatidicta
Version:
91 lines (78 loc) • 2.57 kB
text/typescript
/**
* Remote session service for frontend server.
* Set session info for backend servers.
*/
import * as utils from '../../../util/utils';
import {Application} from '../../../application';
import {SID, UID} from '../../../util/constants';
export default function (app: Application) {
return new SessionRemote(app);
}
export class SessionRemote {
app: Application;
constructor(app: Application) {
this.app = app;
}
bind(sid: SID, uid: UID) {
return this.app.sessionService.abind(sid, uid);
}
unbind(sid: SID, uid: UID) {
return this.app.sessionService.aunbind(sid, uid);
}
push(sid: SID, key: string, value: any) {
return this.app.sessionService.aimport(sid, key, value);
}
pushAll(sid: SID, settings: { [key: string]: any }) {
return this.app.sessionService.aimportAll(sid, settings);
}
/**
* Get session informations with session id.
*
* @param {String} sid session id binded with the session
* @param {Function} cb(err, sinfo) callback funtion, sinfo would be null if the session not exist.
*/
getBackendSessionBySid(sid: SID) {
let session = this.app.sessionService.get(sid);
if (!session) {
return;
}
return session.toFrontendSession().export();
}
/**
* Get all the session informations with the specified user id.
*
* @param {String} uid user id binded with the session
* @param {Function} cb(err, sinfo) callback funtion, sinfo would be null if the session does not exist.
*/
getBackendSessionsByUid(uid: UID) {
let sessions = this.app.sessionService.getByUid(uid);
if (!sessions) {
return;
}
let res = [];
for (let i = 0, l = sessions.length; i < l; i++) {
res.push(sessions[i].toFrontendSession().export());
}
return res;
}
/**
* Kick a session by session id.
*
* @param {Number} sid session id
* @param {String} reason kick reason
* @param {Function} cb callback function
*/
kickBySid(sid: SID, reason: string) {
return this.app.sessionService.akickBySessionId(sid, reason);
}
/**
* Kick sessions by user id.
*
* @param {Number|String} uid user id
* @param {String} reason kick reason
* @param {Function} cb callback function
*/
kickByUid(uid: UID, reason: string) {
return this.app.sessionService.akick(uid, reason);
}
}