40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import { STATUS } from './../../../consts/statusCode';
|
|
import { dispatch } from '@pubUtils/dispatcher';
|
|
import { Application, BackendSession, HandlerService, pinus, } from 'pinus';
|
|
import { resResult } from '@pubUtils/util';
|
|
import { redisClient } from '../../../services/redisService';
|
|
|
|
export default function (app: Application) {
|
|
new HandlerService(app, {});
|
|
return new GateHandler(app);
|
|
}
|
|
|
|
export class GateHandler {
|
|
constructor(private app: Application) {
|
|
}
|
|
|
|
/**
|
|
* Gate handler that dispatch user to connectors.
|
|
*
|
|
* @param {Object} msg message from client
|
|
* @param {Object} session
|
|
*
|
|
*/
|
|
async queryEntry(msg: { userCode: string }, session: BackendSession) {
|
|
let { userCode } = msg;
|
|
if (!userCode) {
|
|
return resResult(STATUS.WRONG_PARMS);
|
|
}
|
|
// get all connectors
|
|
let connectors = this.app.getServersByType('connector');
|
|
// console.log(connectors);
|
|
if (!connectors || connectors.length === 0) {
|
|
return resResult(STATUS.CONNECTOR_ERR);
|
|
}
|
|
// select connector
|
|
let res = await dispatch(redisClient(), userCode, connectors, 'connector');
|
|
return resResult(STATUS.SUCCESS, { host: res.clientHost, port: res.clientPort });
|
|
}
|
|
}
|
|
|