@dfeidao/send-msg
Version:
消息总线
62 lines (61 loc) • 2.61 kB
JavaScript
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;
});