omelot-base-gate
Version:
omelot base gate plugin
47 lines • 3.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const crypto_1 = require("crypto");
const common_1 = require("../common");
// 网关处理
class GateHandler {
constructor(app) {
this.app = app;
}
hashDispatch(id, servers) {
if (servers.length === 0) {
return;
}
if (id === null || id === undefined) {
return servers[0];
}
if (typeof (id) !== 'string') {
id = String(id);
}
let md5 = crypto_1.createHash('md5').update(id).digest('hex');
let hash = parseInt(md5.substr(0, 8), 16);
return servers[hash % servers.length];
}
// 查询该用哪个connector
async queryEntry(msg, session) {
// console.log("queryEntry" + msg.openid);
let openid = msg.openid;
if (!openid) {
return { code: common_1.Code.FAIL };
}
let connectors = this.app.getServersByType('connector');
if (!connectors || connectors.length === 0) {
return { code: common_1.Code.FA_NO_SERVER_AVAILABLE };
}
let res = this.hashDispatch(openid, connectors);
let connectorHost = { code: common_1.Code.OK, host: res.clientHost, port: res.clientPort, openid: openid, hash: '' };
// 计算出hash给connector验证
connectorHost.hash = common_1.common.calcConnectorHostHash(connectorHost);
return connectorHost;
}
}
exports.GateHandler = GateHandler;
function default_1(app) {
return new GateHandler(app);
}
exports.default = default_1;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZUhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGFuZGxlci9nYXRlSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLG1DQUFvQztBQUNwQyxzQ0FBd0Q7QUFHeEQsT0FBTztBQUNQO0lBQ0ksWUFBb0IsR0FBZ0I7UUFBaEIsUUFBRyxHQUFILEdBQUcsQ0FBYTtJQUVwQyxDQUFDO0lBR0QsWUFBWSxDQUFDLEVBQVUsRUFBRSxPQUFxQjtRQUMxQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE9BQU87U0FDVjtRQUVELElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFO1lBQ2pDLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO1FBRUQsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssUUFBUSxFQUFFO1lBQzFCLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDbkI7UUFDRCxJQUFJLEdBQUcsR0FBRyxtQkFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGtCQUFrQjtJQUNYLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBdUIsRUFBRSxPQUF3QjtRQUNyRSwwQ0FBMEM7UUFDMUMsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1YsT0FBTyxFQUFDLElBQUksRUFBRSxhQUFJLENBQUMsSUFBSSxFQUFDLENBQUM7U0FDM0I7UUFFRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEMsT0FBTyxFQUFDLElBQUksRUFBRSxhQUFJLENBQUMsc0JBQXNCLEVBQUMsQ0FBQztTQUM5QztRQUVELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELElBQUksYUFBYSxHQUFHLEVBQUMsSUFBSSxFQUFFLGFBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDM0csc0JBQXNCO1FBQ3RCLGFBQWEsQ0FBQyxJQUFJLEdBQUcsZUFBTSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7Q0FDSjtBQTNDRCxrQ0EyQ0M7QUFFRCxtQkFBd0IsR0FBZ0I7SUFDcEMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRkQsNEJBRUMifQ==