UNPKG

omelop

Version:

[![Build Status](https://travis-ci.org/node-omelop/omelop.svg?branch=master)](https://travis-ci.org/node-omelop/omelop)

119 lines 9.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HandshakeCommand = void 0; const omelop_1 = require("../../omelop"); const omelop_protocol_1 = require("omelop-protocol"); let CODE_OK = 200; let CODE_USE_ERROR = 500; let CODE_OLD_CLIENT = 501; /** * Process the handshake request. * * @param {Object} opts option parameters * opts.handshake(msg, cb(err, resp)) handshake callback. msg is the handshake message from client. * opts.hearbeat heartbeat interval (level?) * opts.version required client level */ class HandshakeCommand { constructor(opts) { opts = opts || {}; this.userHandshake = opts.handshake; if (opts.heartbeat) { this.heartbeatSec = opts.heartbeat; this.heartbeat = opts.heartbeat * 1000; } this.checkClient = opts.checkClient; this.useDict = opts.useDict; this.useProtobuf = opts.useProtobuf; this.useCrypto = opts.useCrypto; } handle(socket, msg) { if (!msg.sys) { processError(socket, CODE_USE_ERROR); return; } if (typeof this.checkClient === 'function') { if (!msg || !msg.sys || !this.checkClient(msg.sys.type, msg.sys.version)) { processError(socket, CODE_OLD_CLIENT); return; } } let opts = { heartbeat: setupHeartbeat(this) }; if (this.useDict) { let dictVersion = omelop_1.omelop.app.components.__dictionary__.getVersion(); if (!msg.sys.dictVersion || msg.sys.dictVersion !== dictVersion) { // may be deprecated in future opts.dict = omelop_1.omelop.app.components.__dictionary__.getDict(); // 用不到这个。 // opts.routeToCode = omelop.app.components.__dictionary__.getDict(); // opts.codeToRoute = omelop.app.components.__dictionary__.getAbbrs(); opts.dictVersion = dictVersion; } opts.useDict = true; } if (this.useProtobuf) { let protoVersion = omelop_1.omelop.app.components.__protobuf__.getVersion(); if (!msg.sys.protoVersion || msg.sys.protoVersion !== protoVersion) { opts.protos = omelop_1.omelop.app.components.__protobuf__.getProtos(); } opts.useProto = true; } if (!!omelop_1.omelop.app.components.__decodeIO__protobuf__) { if (!!this.useProtobuf) { throw new Error('protobuf can not be both used in the same project.'); } let component = omelop_1.omelop.app.components.__decodeIO__protobuf__; let version = component.getVersion(); if (!msg.sys.protoVersion || msg.sys.protoVersion < version) { opts.protos = component.getProtos(); } opts.useProto = true; } if (this.useCrypto) { omelop_1.omelop.app.components.__connector__.setPubKey(socket.id, msg.sys.rsa); } if (typeof this.userHandshake === 'function') { this.userHandshake(msg, function (err, resp) { if (err) { process.nextTick(function () { processError(socket, CODE_USE_ERROR); }); return; } process.nextTick(function () { response(socket, opts, resp); }); }, socket); return; } process.nextTick(function () { response(socket, opts); }); } } exports.HandshakeCommand = HandshakeCommand; let setupHeartbeat = function (self) { return self.heartbeatSec; }; let response = function (socket, sys, resp) { let res = { code: CODE_OK, sys: sys }; if (resp) { res.user = resp; } socket.handshakeResponse(omelop_protocol_1.Package.encode(omelop_protocol_1.Package.TYPE_HANDSHAKE, Buffer.from(JSON.stringify(res)))); }; let processError = function (socket, code) { let res = { code: code }; socket.sendForce(omelop_protocol_1.Package.encode(omelop_protocol_1.Package.TYPE_HANDSHAKE, Buffer.from(JSON.stringify(res)))); process.nextTick(function () { socket.disconnect(); }); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZHNoYWtlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2Nvbm5lY3RvcnMvY29tbWFuZHMvaGFuZHNoYWtlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFzQztBQUN0QyxxREFBMEM7QUFHMUMsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLElBQUksY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUN6QixJQUFJLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFjMUI7Ozs7Ozs7R0FPRztBQUNILE1BQWEsZ0JBQWdCO0lBU3pCLFlBQVksSUFBNkI7UUFDckMsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztTQUMxQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUVwQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWUsRUFBRSxHQUFRO1FBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1YsWUFBWSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNyQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUU7WUFDeEMsSUFB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