egg 4.1.0-beta.34 → 4.1.0-beta.36
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/agent.d.ts +7 -3
- package/dist/agent.js +10 -6
- package/dist/ajv.d.ts +1 -1
- package/dist/ajv.js +3 -2
- package/dist/aop.d.ts +1 -1
- package/dist/aop.js +3 -2
- package/dist/app/extend/context.d.ts +181 -178
- package/dist/app/extend/context.js +244 -259
- package/dist/app/extend/helper.d.ts +40 -35
- package/dist/app/extend/helper.js +45 -41
- package/dist/app/extend/request.d.ts +135 -131
- package/dist/app/extend/request.js +219 -258
- package/dist/app/extend/response.d.ts +28 -24
- package/dist/app/extend/response.js +36 -34
- package/dist/app/middleware/body_parser.d.ts +2 -2
- package/dist/app/middleware/body_parser.js +7 -3
- package/dist/app/middleware/meta.d.ts +8 -8
- package/dist/app/middleware/meta.js +15 -18
- package/dist/app/middleware/notfound.d.ts +8 -5
- package/dist/app/middleware/notfound.js +25 -28
- package/dist/app/middleware/override_method.d.ts +2 -2
- package/dist/app/middleware/override_method.js +7 -3
- package/dist/app/middleware/site_file.d.ts +11 -7
- package/dist/app/middleware/site_file.js +37 -52
- package/dist/config/config.default.d.ts +11 -6
- package/dist/config/config.default.js +258 -375
- package/dist/config/config.local.d.ts +6 -3
- package/dist/config/config.local.js +7 -8
- package/dist/config/config.unittest.d.ts +6 -3
- package/dist/config/config.unittest.js +10 -8
- package/dist/config/plugin.d.ts +6 -2
- package/dist/config/plugin.js +67 -131
- package/dist/dal.d.ts +1 -1
- package/dist/dal.js +3 -2
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +3 -2
- package/dist/helper.d.ts +1 -1
- package/dist/helper.js +3 -2
- package/dist/index.d.ts +24 -106
- package/dist/index.js +23 -89
- package/dist/lib/agent.d.ts +21 -15
- package/dist/lib/agent.js +53 -45
- package/dist/lib/application.d.ts +60 -54
- package/dist/lib/application.js +200 -250
- package/dist/lib/core/base_context_class.d.ts +23 -17
- package/dist/lib/core/base_context_class.js +17 -15
- package/dist/lib/core/base_context_logger.d.ts +39 -35
- package/dist/lib/core/base_context_logger.js +58 -60
- package/dist/lib/core/base_hook_class.d.ts +18 -11
- package/dist/lib/core/base_hook_class.js +26 -22
- package/dist/lib/core/context_httpclient.d.ts +21 -16
- package/dist/lib/core/context_httpclient.js +29 -26
- package/dist/lib/core/httpclient.d.ts +14 -12
- package/dist/lib/core/httpclient.js +34 -37
- package/dist/lib/core/logger.d.ts +7 -3
- package/dist/lib/core/logger.js +30 -36
- package/dist/lib/core/messenger/IMessenger.d.ts +53 -49
- package/dist/lib/core/messenger/IMessenger.js +1 -2
- package/dist/lib/core/messenger/base.d.ts +11 -7
- package/dist/lib/core/messenger/base.js +30 -29
- package/dist/lib/core/messenger/index.d.ts +10 -6
- package/dist/lib/core/messenger/index.js +11 -8
- package/dist/lib/core/messenger/ipc.d.ts +62 -57
- package/dist/lib/core/messenger/ipc.js +126 -138
- package/dist/lib/core/messenger/local.d.ts +63 -58
- package/dist/lib/core/messenger/local.js +126 -131
- package/dist/lib/core/utils.d.ts +5 -2
- package/dist/lib/core/utils.js +44 -66
- package/dist/lib/define.d.ts +72 -67
- package/dist/lib/define.js +54 -53
- package/dist/lib/egg.d.ts +283 -281
- package/dist/lib/egg.js +512 -573
- package/dist/lib/error/CookieLimitExceedError.d.ts +7 -4
- package/dist/lib/error/CookieLimitExceedError.js +15 -12
- package/dist/lib/error/MessageUnhandledRejectionError.d.ts +7 -4
- package/dist/lib/error/MessageUnhandledRejectionError.js +15 -12
- package/dist/lib/error/index.d.ts +3 -2
- package/dist/lib/error/index.js +4 -3
- package/dist/lib/loader/AgentWorkerLoader.d.ts +15 -10
- package/dist/lib/loader/AgentWorkerLoader.js +22 -18
- package/dist/lib/loader/AppWorkerLoader.d.ts +20 -15
- package/dist/lib/loader/AppWorkerLoader.js +35 -37
- package/dist/lib/loader/EggApplicationLoader.d.ts +7 -3
- package/dist/lib/loader/EggApplicationLoader.js +7 -4
- package/dist/lib/loader/index.d.ts +4 -3
- package/dist/lib/loader/index.js +5 -4
- package/dist/lib/start.d.ts +24 -20
- package/dist/lib/start.js +32 -42
- package/dist/lib/types.d.ts +288 -286
- package/dist/lib/types.js +2 -2
- package/dist/lib/types.plugin.d.ts +21 -21
- package/dist/lib/types.plugin.js +23 -24
- package/dist/orm.d.ts +1 -1
- package/dist/orm.js +3 -2
- package/dist/schedule.d.ts +2 -2
- package/dist/schedule.js +5 -5
- package/dist/transaction.d.ts +1 -1
- package/dist/transaction.js +3 -2
- package/dist/urllib.d.ts +1 -1
- package/dist/urllib.js +3 -2
- package/package.json +60 -64
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
//#
|
|
1
|
+
import { MessageUnhandledRejectionError } from "../../error/MessageUnhandledRejectionError.js";
|
|
2
|
+
import "../../egg.js";
|
|
3
|
+
import { EventEmitter, captureRejectionSymbol } from "node:events";
|
|
4
|
+
|
|
5
|
+
//#region src/lib/core/messenger/base.ts
|
|
6
|
+
var BaseMessenger = class extends EventEmitter {
|
|
7
|
+
egg;
|
|
8
|
+
constructor(egg) {
|
|
9
|
+
super({ captureRejections: true });
|
|
10
|
+
this.egg = egg;
|
|
11
|
+
this[captureRejectionSymbol] = this.onRejection.bind(this);
|
|
12
|
+
}
|
|
13
|
+
onRejection(err, event, ...args) {
|
|
14
|
+
this.egg.coreLogger.error(new MessageUnhandledRejectionError(err, event, args));
|
|
15
|
+
}
|
|
16
|
+
emit(eventName, ...args) {
|
|
17
|
+
const hasListeners = this.listenerCount(eventName) > 0;
|
|
18
|
+
try {
|
|
19
|
+
return super.emit(eventName, ...args);
|
|
20
|
+
} catch (e) {
|
|
21
|
+
let err = e;
|
|
22
|
+
if (!(err instanceof Error)) err = new Error(String(err));
|
|
23
|
+
this.egg.coreLogger.error(new MessageUnhandledRejectionError(err, eventName, args));
|
|
24
|
+
return hasListeners;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
export { BaseMessenger };
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { IMessenger } from "./IMessenger.js";
|
|
2
|
+
import { EggApplicationCore } from "../../egg.js";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/core/messenger/index.d.ts
|
|
5
|
+
|
|
4
6
|
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
* @class Messenger
|
|
8
|
+
*/
|
|
9
|
+
declare function create(egg: EggApplicationCore): IMessenger;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { type IMessenger, create };
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { Messenger
|
|
2
|
-
import { Messenger as
|
|
1
|
+
import { Messenger } from "./ipc.js";
|
|
2
|
+
import { Messenger as Messenger$1 } from "./local.js";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/core/messenger/index.ts
|
|
3
5
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return messenger;
|
|
6
|
+
* @class Messenger
|
|
7
|
+
*/
|
|
8
|
+
function create(egg) {
|
|
9
|
+
return egg.options.mode === "single" ? new Messenger$1(egg) : new Messenger(egg);
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
export { create };
|
|
@@ -1,59 +1,64 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { BaseMessenger } from
|
|
1
|
+
import { IMessenger } from "./IMessenger.js";
|
|
2
|
+
import { EggApplicationCore } from "../../egg.js";
|
|
3
|
+
import { BaseMessenger } from "./base.js";
|
|
4
|
+
|
|
5
|
+
//#region src/lib/core/messenger/ipc.d.ts
|
|
6
|
+
|
|
4
7
|
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
8
|
+
* Communication between app worker and agent worker by IPC channel
|
|
9
|
+
*/
|
|
10
|
+
declare class Messenger extends BaseMessenger implements IMessenger {
|
|
11
|
+
#private;
|
|
12
|
+
readonly pid: string;
|
|
13
|
+
opids: string[];
|
|
14
|
+
constructor(egg: EggApplicationCore);
|
|
15
|
+
/**
|
|
16
|
+
* Send message to all agent and app
|
|
17
|
+
* @param {String} action - message key
|
|
18
|
+
* @param {Object} data - message value
|
|
19
|
+
* @return {Messenger} this
|
|
20
|
+
*/
|
|
21
|
+
broadcast(action: string, data?: unknown): Messenger;
|
|
22
|
+
/**
|
|
23
|
+
* send message to the specified process
|
|
24
|
+
* @param {String} workerId - the workerId of the receiver
|
|
25
|
+
* @param {String} action - message key
|
|
26
|
+
* @param {Object} data - message value
|
|
27
|
+
* @return {Messenger} this
|
|
28
|
+
*/
|
|
29
|
+
sendTo(workerId: string, action: string, data?: unknown): Messenger;
|
|
30
|
+
/**
|
|
31
|
+
* send message to one app worker by random
|
|
32
|
+
* - if it's running in agent, it will send to one of app workers
|
|
33
|
+
* - if it's running in app, it will send to agent
|
|
34
|
+
* @param {String} action - message key
|
|
35
|
+
* @param {Object} data - message value
|
|
36
|
+
* @return {Messenger} this
|
|
37
|
+
*/
|
|
38
|
+
sendRandom(action: string, data?: unknown): Messenger;
|
|
39
|
+
/**
|
|
40
|
+
* send message to app
|
|
41
|
+
* @param {String} action - message key
|
|
42
|
+
* @param {Object} data - message value
|
|
43
|
+
* @return {Messenger} this
|
|
44
|
+
*/
|
|
45
|
+
sendToApp(action: string, data?: unknown): Messenger;
|
|
46
|
+
/**
|
|
47
|
+
* send message to agent
|
|
48
|
+
* @param {String} action - message key
|
|
49
|
+
* @param {Object} data - message value
|
|
50
|
+
* @return {Messenger} this
|
|
51
|
+
*/
|
|
52
|
+
sendToAgent(action: string, data?: unknown): Messenger;
|
|
53
|
+
/**
|
|
54
|
+
* @param {String} action - message key
|
|
55
|
+
* @param {Object} data - message value
|
|
56
|
+
* @param {String} to - let master know how to send message
|
|
57
|
+
* @return {Messenger} this
|
|
58
|
+
*/
|
|
59
|
+
send(action: string, data: unknown | undefined, to?: string): Messenger;
|
|
60
|
+
onMessage(message: any): void;
|
|
61
|
+
close(): void;
|
|
59
62
|
}
|
|
63
|
+
//#endregion
|
|
64
|
+
export { Messenger };
|
|
@@ -1,140 +1,128 @@
|
|
|
1
|
-
import { debuglog } from 'node:util';
|
|
2
|
-
import workerThreads from 'node:worker_threads';
|
|
3
|
-
import { sendmessage } from 'sendmessage';
|
|
4
1
|
import { BaseMessenger } from "./base.js";
|
|
5
|
-
|
|
2
|
+
import { debuglog } from "node:util";
|
|
3
|
+
import workerThreads from "node:worker_threads";
|
|
4
|
+
import { sendmessage } from "sendmessage";
|
|
5
|
+
|
|
6
|
+
//#region src/lib/core/messenger/ipc.ts
|
|
7
|
+
const debug = debuglog("egg/lib/core/messenger/ipc");
|
|
6
8
|
/**
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
// {"type":"Buffer","data":[255,153,....]
|
|
128
|
-
debug('[%s:%s] got an invalid message: %s', this.egg.type, this.pid, Buffer.from(message.data));
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
debug('[%s:%s] got an invalid message %j', this.egg.type, this.pid, message);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
close() {
|
|
136
|
-
process.removeListener('message', this.onMessage);
|
|
137
|
-
this.removeAllListeners();
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL21lc3Nlbmdlci9pcGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLGFBQWEsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSTFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sU0FBVSxTQUFRLGFBQWE7SUFDakMsR0FBRyxDQUFTO0lBQ3JCLEtBQUssR0FBYSxFQUFFLENBQUM7SUFFckIsWUFBWSxHQUF1QjtRQUNqQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IseUNBQXlDO1FBQ3pDLHVEQUF1RDtRQUN2RCx1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNoQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7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
|
|
9
|
+
* Communication between app worker and agent worker by IPC channel
|
|
10
|
+
*/
|
|
11
|
+
var Messenger = class extends BaseMessenger {
|
|
12
|
+
pid;
|
|
13
|
+
opids = [];
|
|
14
|
+
constructor(egg) {
|
|
15
|
+
super(egg);
|
|
16
|
+
this.pid = String(process.pid);
|
|
17
|
+
this.on("egg-pids", (workerIds) => {
|
|
18
|
+
debug("[%s:%s] got egg-pids %j", this.egg.type, this.pid, workerIds);
|
|
19
|
+
this.opids = workerIds.map((workerId) => String(workerId));
|
|
20
|
+
});
|
|
21
|
+
this.onMessage = this.onMessage.bind(this);
|
|
22
|
+
process.on("message", this.onMessage);
|
|
23
|
+
if (!workerThreads.isMainThread) workerThreads.parentPort.on("message", this.onMessage);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Send message to all agent and app
|
|
27
|
+
* @param {String} action - message key
|
|
28
|
+
* @param {Object} data - message value
|
|
29
|
+
* @return {Messenger} this
|
|
30
|
+
*/
|
|
31
|
+
broadcast(action, data) {
|
|
32
|
+
debug("[%s:%s] broadcast %s with %j", this.egg.type, this.pid, action, data);
|
|
33
|
+
this.send(action, data, "app");
|
|
34
|
+
this.send(action, data, "agent");
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* send message to the specified process
|
|
39
|
+
* @param {String} workerId - the workerId of the receiver
|
|
40
|
+
* @param {String} action - message key
|
|
41
|
+
* @param {Object} data - message value
|
|
42
|
+
* @return {Messenger} this
|
|
43
|
+
*/
|
|
44
|
+
sendTo(workerId, action, data) {
|
|
45
|
+
debug("[%s:%s] send %s with %j to workerId:%s", this.egg.type, this.pid, action, data, workerId);
|
|
46
|
+
const message = {
|
|
47
|
+
action,
|
|
48
|
+
data,
|
|
49
|
+
receiverPid: String(workerId),
|
|
50
|
+
receiverWorkerId: String(workerId)
|
|
51
|
+
};
|
|
52
|
+
this.#sendMessage(message);
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* send message to one app worker by random
|
|
57
|
+
* - if it's running in agent, it will send to one of app workers
|
|
58
|
+
* - if it's running in app, it will send to agent
|
|
59
|
+
* @param {String} action - message key
|
|
60
|
+
* @param {Object} data - message value
|
|
61
|
+
* @return {Messenger} this
|
|
62
|
+
*/
|
|
63
|
+
sendRandom(action, data) {
|
|
64
|
+
if (this.opids.length === 0) {
|
|
65
|
+
debug("[%s:%s] no pids, ignore sendRandom %s with %j", this.egg.type, this.pid, action, data);
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
const index = Math.floor(Math.random() * this.opids.length);
|
|
69
|
+
const workerId = this.opids[index];
|
|
70
|
+
this.sendTo(workerId, action, data);
|
|
71
|
+
return this;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* send message to app
|
|
75
|
+
* @param {String} action - message key
|
|
76
|
+
* @param {Object} data - message value
|
|
77
|
+
* @return {Messenger} this
|
|
78
|
+
*/
|
|
79
|
+
sendToApp(action, data) {
|
|
80
|
+
debug("[%s:%s] send %s with %j to all app", this.egg.type, this.pid, action, data);
|
|
81
|
+
this.send(action, data, "app");
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* send message to agent
|
|
86
|
+
* @param {String} action - message key
|
|
87
|
+
* @param {Object} data - message value
|
|
88
|
+
* @return {Messenger} this
|
|
89
|
+
*/
|
|
90
|
+
sendToAgent(action, data) {
|
|
91
|
+
debug("[%s:%s] send %s with %j to all agent", this.egg.type, this.pid, action, data);
|
|
92
|
+
this.send(action, data, "agent");
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* @param {String} action - message key
|
|
97
|
+
* @param {Object} data - message value
|
|
98
|
+
* @param {String} to - let master know how to send message
|
|
99
|
+
* @return {Messenger} this
|
|
100
|
+
*/
|
|
101
|
+
send(action, data, to) {
|
|
102
|
+
debug("send message %s with %j to %s", action, data, to);
|
|
103
|
+
this.#sendMessage({
|
|
104
|
+
action,
|
|
105
|
+
data,
|
|
106
|
+
to
|
|
107
|
+
});
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
#sendMessage(message) {
|
|
111
|
+
debug("[%s:%s] send message %j, mode: %s", this.egg.type, this.pid, message, this.egg.options.mode);
|
|
112
|
+
sendmessage(process, message);
|
|
113
|
+
}
|
|
114
|
+
onMessage(message) {
|
|
115
|
+
if (typeof message?.action === "string") {
|
|
116
|
+
debug("[%s:%s] got message %s with %j, receiverWorkerId: %s", this.egg.type, this.pid, message.action, message.data, message.receiverWorkerId ?? message.receiverPid);
|
|
117
|
+
this.emit(message.action, message.data);
|
|
118
|
+
} else if (message?.type === "Buffer") debug("[%s:%s] got an invalid message: %s", this.egg.type, this.pid, Buffer.from(message.data));
|
|
119
|
+
else debug("[%s:%s] got an invalid message %j", this.egg.type, this.pid, message);
|
|
120
|
+
}
|
|
121
|
+
close() {
|
|
122
|
+
process.removeListener("message", this.onMessage);
|
|
123
|
+
this.removeAllListeners();
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
//#endregion
|
|
128
|
+
export { Messenger };
|
|
@@ -1,60 +1,65 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { BaseMessenger } from
|
|
1
|
+
import { IMessenger } from "./IMessenger.js";
|
|
2
|
+
import { EggApplicationCore } from "../../egg.js";
|
|
3
|
+
import { BaseMessenger } from "./base.js";
|
|
4
|
+
|
|
5
|
+
//#region src/lib/core/messenger/local.d.ts
|
|
6
|
+
|
|
4
7
|
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
8
|
+
* Communication between app worker and agent worker with EventEmitter
|
|
9
|
+
*/
|
|
10
|
+
declare class Messenger extends BaseMessenger implements IMessenger {
|
|
11
|
+
readonly pid: string;
|
|
12
|
+
constructor(egg: EggApplicationCore);
|
|
13
|
+
/**
|
|
14
|
+
* Send message to all agent and app
|
|
15
|
+
* @param {String} action - message key
|
|
16
|
+
* @param {Object} data - message value
|
|
17
|
+
* @return {Messenger} this
|
|
18
|
+
*/
|
|
19
|
+
broadcast(action: string, data?: unknown): Messenger;
|
|
20
|
+
/**
|
|
21
|
+
* send message to the specified process
|
|
22
|
+
* Notice: in single process mode, it only can send to self process,
|
|
23
|
+
* and it will send to both agent and app's messengers.
|
|
24
|
+
* @param {String} workerId - the workerId of the receiver
|
|
25
|
+
* @param {String} action - message key
|
|
26
|
+
* @param {Object} data - message value
|
|
27
|
+
* @return {Messenger} this
|
|
28
|
+
*/
|
|
29
|
+
sendTo(workerId: string, action: string, data?: unknown): Messenger;
|
|
30
|
+
/**
|
|
31
|
+
* send message to one worker by random
|
|
32
|
+
* Notice: in single process mode, we only start one agent worker and one app worker
|
|
33
|
+
* - if it's running in agent, it will send to one of app workers
|
|
34
|
+
* - if it's running in app, it will send to agent
|
|
35
|
+
* @param {String} action - message key
|
|
36
|
+
* @param {Object} data - message value
|
|
37
|
+
* @return {Messenger} this
|
|
38
|
+
*/
|
|
39
|
+
sendRandom(action: string, data?: unknown): Messenger;
|
|
40
|
+
/**
|
|
41
|
+
* send message to app
|
|
42
|
+
* @param {String} action - message key
|
|
43
|
+
* @param {Object} data - message value
|
|
44
|
+
* @return {Messenger} this
|
|
45
|
+
*/
|
|
46
|
+
sendToApp(action: string, data?: unknown): Messenger;
|
|
47
|
+
/**
|
|
48
|
+
* send message to agent
|
|
49
|
+
* @param {String} action - message key
|
|
50
|
+
* @param {Object} data - message value
|
|
51
|
+
* @return {Messenger} this
|
|
52
|
+
*/
|
|
53
|
+
sendToAgent(action: string, data?: unknown): Messenger;
|
|
54
|
+
/**
|
|
55
|
+
* @param {String} action - message key
|
|
56
|
+
* @param {Object} data - message value
|
|
57
|
+
* @param {String} to - let master know how to send message
|
|
58
|
+
* @return {Messenger} this
|
|
59
|
+
*/
|
|
60
|
+
send(action: string, data: unknown, to?: string): Messenger;
|
|
61
|
+
onMessage(message: any): void;
|
|
62
|
+
close(): void;
|
|
60
63
|
}
|
|
64
|
+
//#endregion
|
|
65
|
+
export { Messenger };
|