UNPKG

@dfeidao/send-msg

Version:

消息总线

62 lines (61 loc) 2.61 kB
var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; (function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "log4js", "node-fetch", "uuid", "../config"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const log4js_1 = require("log4js"); const node_fetch_1 = __importDefault(require("node-fetch")); const uuid_1 = require("uuid"); const config_1 = __importDefault(require("../config")); const logger = (0, log4js_1.getLogger)(); const java_url = `${config_1.default.java}/jssign`; const timeout = config_1.default.timeout; async function http(headers, msg) { const msgid = (0, uuid_1.v4)(); const jsgroup = `${config_1.default.spaceid}-${config_1.default.type}`; const body = JSON.stringify(msg); const { actionid, msgtype, sessionid } = headers; logger.info(`Start sending message, actionid=${actionid}, Message type=${msgtype}, sessionid=${sessionid}, message body=${body}`); const res = await (0, node_fetch_1.default)(java_url, { body, headers: { 'content-type': 'application/json', jsgroup, msgid, 'spaceid': config_1.default.spaceid, 'usersessionid': sessionid, ...headers }, method: 'POST', timeout }); const data = await res.buffer(); const res_headers = res.headers.raw(); logger.info(`Finish sending message, actionid=${actionid},message body=${body}. Response status=${res.status}, Response headers=${JSON.stringify(res_headers)}, Response body=${data}`); const code = res.headers.get('controlcode'); const code_msg = decodeURIComponent(res.headers.get('controlcodemsg')); switch (code) { case '0': throw new Error(code_msg || 'Unknown'); case '3': throw new Error(code_msg || 'Session expired.'); case '1': default: return { data, headers: res_headers, status_code: res.status }; } } exports.default = http; });