kb-server 0.0.1-beta.22 → 0.0.1-beta.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/create-sse.d.ts +0 -4
- package/dist/common/sse-middleware.js +14 -24
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/package.json +1 -1
|
@@ -14,10 +14,6 @@ operations: {
|
|
|
14
14
|
* 向客户端推送消息
|
|
15
15
|
*/
|
|
16
16
|
send: (event: string, message: string) => void;
|
|
17
|
-
/**
|
|
18
|
-
* 推送完毕回调
|
|
19
|
-
*/
|
|
20
|
-
done: () => void;
|
|
21
17
|
}) => Promise<R>;
|
|
22
18
|
export type AnySseExecution = SseExecution<any, any, any>;
|
|
23
19
|
export type SseHandlers = Record<string, AnySseExecution>;
|
|
@@ -6,18 +6,20 @@ const logger_1 = require("../helper/logger");
|
|
|
6
6
|
const create_errors_1 = require("./create-errors");
|
|
7
7
|
const short_id_1 = require("../helper/short-id");
|
|
8
8
|
const packSSE = (sseHandlers, options) => {
|
|
9
|
-
const sseMap = new Map(Object.entries(sseHandlers).map(([action, execution]) => [
|
|
10
|
-
action,
|
|
11
|
-
execution,
|
|
12
|
-
]));
|
|
13
9
|
const { authFn, log = true, route = "/sse" } = options || {};
|
|
14
10
|
return async (req, res, next) => {
|
|
11
|
+
// 生成SSE API映射
|
|
12
|
+
const sseMap = new Map(Object.entries(sseHandlers).map(([action, execution]) => [
|
|
13
|
+
action,
|
|
14
|
+
execution,
|
|
15
|
+
]));
|
|
16
|
+
// 检查SSE路由
|
|
15
17
|
const isValidRoute = route.startsWith("/");
|
|
16
18
|
if (!isValidRoute) {
|
|
17
19
|
throw new create_errors_1.CommonErrors.InvalidParameter.RouteError();
|
|
18
20
|
}
|
|
19
21
|
const { path } = req;
|
|
20
|
-
// SSE
|
|
22
|
+
// 非SSE的请求直接放过
|
|
21
23
|
if (path !== route) {
|
|
22
24
|
next();
|
|
23
25
|
return;
|
|
@@ -60,30 +62,18 @@ const packSSE = (sseHandlers, options) => {
|
|
|
60
62
|
if (typeof execution !== "function") {
|
|
61
63
|
throw new create_errors_1.CommonErrors.ResourceNotFound.APINotFound();
|
|
62
64
|
}
|
|
63
|
-
|
|
64
|
-
* 开始处理SSE请求就要统计
|
|
65
|
-
*
|
|
66
|
-
* 请求处理完毕的时间
|
|
67
|
-
*
|
|
68
|
-
* 不要让 API 随意改写 req res 里面的东西
|
|
69
|
-
*
|
|
70
|
-
* 统一管理请求头
|
|
71
|
-
*
|
|
72
|
-
*/
|
|
65
|
+
// 写请求头
|
|
73
66
|
res.writeHead(200, {
|
|
74
67
|
"Content-Type": "text/event-stream",
|
|
75
68
|
"Cache-Control": "no-cache",
|
|
76
69
|
Connection: "keep-alive",
|
|
77
70
|
});
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const done = () => resolve(true);
|
|
85
|
-
execution(params, ctx, { send, done });
|
|
86
|
-
});
|
|
71
|
+
const send = (event, message) => {
|
|
72
|
+
const response = (0, exports.createSSEMessage)(event, message);
|
|
73
|
+
res.write(response);
|
|
74
|
+
logger_1.logger.log("info", `发送消息:\n${response}`);
|
|
75
|
+
};
|
|
76
|
+
await execution(params, ctx, { send });
|
|
87
77
|
// 完成响应
|
|
88
78
|
took = Date.now() - start;
|
|
89
79
|
logger_1.logger.log("info", `耗时:${took} ms - RequestId: ${requestId}`);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { createServer } from "./common/create-server";
|
|
2
2
|
export { createErrors } from "./common/create-errors";
|
|
3
3
|
export { implementAPI, ServerContext } from "./common/create-api";
|
|
4
|
+
export { implementSseAPI } from "./common/create-sse";
|
|
4
5
|
export { callService } from "./common/call-service";
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.callService = exports.implementAPI = exports.createErrors = exports.createServer = void 0;
|
|
3
|
+
exports.callService = exports.implementSseAPI = exports.implementAPI = exports.createErrors = exports.createServer = void 0;
|
|
4
4
|
var create_server_1 = require("./common/create-server");
|
|
5
5
|
Object.defineProperty(exports, "createServer", { enumerable: true, get: function () { return create_server_1.createServer; } });
|
|
6
6
|
var create_errors_1 = require("./common/create-errors");
|
|
7
7
|
Object.defineProperty(exports, "createErrors", { enumerable: true, get: function () { return create_errors_1.createErrors; } });
|
|
8
8
|
var create_api_1 = require("./common/create-api");
|
|
9
9
|
Object.defineProperty(exports, "implementAPI", { enumerable: true, get: function () { return create_api_1.implementAPI; } });
|
|
10
|
+
var create_sse_1 = require("./common/create-sse");
|
|
11
|
+
Object.defineProperty(exports, "implementSseAPI", { enumerable: true, get: function () { return create_sse_1.implementSseAPI; } });
|
|
10
12
|
var call_service_1 = require("./common/call-service");
|
|
11
13
|
Object.defineProperty(exports, "callService", { enumerable: true, get: function () { return call_service_1.callService; } });
|