@mingzey/typedrpc 1.0.0

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.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +228 -0
  3. package/README.zh-CN.md +228 -0
  4. package/dist/api.d.ts +16 -0
  5. package/dist/api.d.ts.map +1 -0
  6. package/dist/api.js +52 -0
  7. package/dist/api.js.map +1 -0
  8. package/dist/client.d.ts +28 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +50 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/connecitons/basic.d.ts +42 -0
  13. package/dist/connecitons/basic.d.ts.map +1 -0
  14. package/dist/connecitons/basic.js +9 -0
  15. package/dist/connecitons/basic.js.map +1 -0
  16. package/dist/connecitons/http.d.ts +38 -0
  17. package/dist/connecitons/http.d.ts.map +1 -0
  18. package/dist/connecitons/http.js +143 -0
  19. package/dist/connecitons/http.js.map +1 -0
  20. package/dist/connecitons/socket.d.ts +33 -0
  21. package/dist/connecitons/socket.d.ts.map +1 -0
  22. package/dist/connecitons/socket.js +210 -0
  23. package/dist/connecitons/socket.js.map +1 -0
  24. package/dist/connecitons/socketio.d.ts +32 -0
  25. package/dist/connecitons/socketio.d.ts.map +1 -0
  26. package/dist/connecitons/socketio.js +162 -0
  27. package/dist/connecitons/socketio.js.map +1 -0
  28. package/dist/connection.d.ts +5 -0
  29. package/dist/connection.d.ts.map +1 -0
  30. package/dist/connection.js +5 -0
  31. package/dist/connection.js.map +1 -0
  32. package/dist/context.d.ts +13 -0
  33. package/dist/context.d.ts.map +1 -0
  34. package/dist/context.js +2 -0
  35. package/dist/context.js.map +1 -0
  36. package/dist/core.d.ts +40 -0
  37. package/dist/core.d.ts.map +1 -0
  38. package/dist/core.js +97 -0
  39. package/dist/core.js.map +1 -0
  40. package/dist/define.d.ts +14 -0
  41. package/dist/define.d.ts.map +1 -0
  42. package/dist/define.js +40 -0
  43. package/dist/define.js.map +1 -0
  44. package/dist/handler.d.ts +30 -0
  45. package/dist/handler.d.ts.map +1 -0
  46. package/dist/handler.js +172 -0
  47. package/dist/handler.js.map +1 -0
  48. package/dist/index.d.ts +15 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +14 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/packet.d.ts +36 -0
  53. package/dist/packet.d.ts.map +1 -0
  54. package/dist/packet.js +40 -0
  55. package/dist/packet.js.map +1 -0
  56. package/dist/server.d.ts +34 -0
  57. package/dist/server.d.ts.map +1 -0
  58. package/dist/server.js +51 -0
  59. package/dist/server.js.map +1 -0
  60. package/dist/test/TestCase.d.ts +6 -0
  61. package/dist/test/TestCase.d.ts.map +1 -0
  62. package/dist/test/TestCase.js +5 -0
  63. package/dist/test/TestCase.js.map +1 -0
  64. package/dist/test/authorization.d.ts +8 -0
  65. package/dist/test/authorization.d.ts.map +1 -0
  66. package/dist/test/authorization.js +169 -0
  67. package/dist/test/authorization.js.map +1 -0
  68. package/dist/test/basic.d.ts +7 -0
  69. package/dist/test/basic.d.ts.map +1 -0
  70. package/dist/test/basic.js +35 -0
  71. package/dist/test/basic.js.map +1 -0
  72. package/dist/test/context.d.ts +7 -0
  73. package/dist/test/context.d.ts.map +1 -0
  74. package/dist/test/context.js +55 -0
  75. package/dist/test/context.js.map +1 -0
  76. package/dist/test/expressmix.d.ts +7 -0
  77. package/dist/test/expressmix.d.ts.map +1 -0
  78. package/dist/test/expressmix.js +63 -0
  79. package/dist/test/expressmix.js.map +1 -0
  80. package/dist/test/full-duplex.d.ts +12 -0
  81. package/dist/test/full-duplex.d.ts.map +1 -0
  82. package/dist/test/full-duplex.js +77 -0
  83. package/dist/test/full-duplex.js.map +1 -0
  84. package/dist/test/socket.d.ts +8 -0
  85. package/dist/test/socket.d.ts.map +1 -0
  86. package/dist/test/socket.js +71 -0
  87. package/dist/test/socket.js.map +1 -0
  88. package/dist/test.d.ts +2 -0
  89. package/dist/test.d.ts.map +1 -0
  90. package/dist/test.js +33 -0
  91. package/dist/test.js.map +1 -0
  92. package/dist/utils.d.ts +40 -0
  93. package/dist/utils.d.ts.map +1 -0
  94. package/dist/utils.js +46 -0
  95. package/dist/utils.js.map +1 -0
  96. package/package.json +27 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/connecitons/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,KAAK,uBAAuB,GAAG;IAC3B,6BAA6B;IAC7B,OAAO,EAAC,CAAC,OAAO,EAAC;QACb,IAAI,EAAC,MAAM,CAAC;QACZ,QAAQ,EAAC,CAAC,IAAI,EAAC,MAAM,KAAK,IAAI,CAAC;KAClC,KAAK,IAAI,CAAC;CACd,CAAA;AACD,uBAAe,iBAAiB;IACrB,OAAO,wCAA+C;IAC7D,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAC,MAAM,GAAE,OAAO,CAAC,MAAM,CAAC;IAC7C,cAAc;IACd,QAAQ,CAAC,KAAK,IAAG,MAAM;IACvB,WAAW;IACX,QAAQ,CAAC,KAAK,IAAG,OAAO;IACxB,WAAW;IACX,QAAQ,CAAC,QAAQ,IAAG,OAAO;CAC9B;AAED,KAAK,+BAA+B,GAAG;IACnC,cAAc;IACd,UAAU,EAAC,CAAC,UAAU,EAAC,iBAAiB,KAAK,IAAI,CAAC;CACrD,CAAA;AACD,uBAAe,yBAAyB;IAC7B,OAAO,gDAAuD;IACrE;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAC;QACnB,IAAI,EAAC,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAC,MAAM,CAAC;KACpB,GAAE,OAAO,CAAC,OAAO,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,KAAK,IAAG,OAAO,CAAC,OAAO,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAC,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAC;CAC7D;AAED,OAAO,EACH,iBAAiB,EACjB,yBAAyB,GAC5B,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { TypedEmitter } from "../utils.js";
2
+ class TypeRPCConnection {
3
+ emitter = new TypedEmitter();
4
+ }
5
+ class TypeRPCConnectionProvider {
6
+ emitter = new TypedEmitter();
7
+ }
8
+ export { TypeRPCConnection, TypeRPCConnectionProvider, };
9
+ //# sourceMappingURL=basic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../src/connecitons/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C,MAAe,iBAAiB;IACrB,OAAO,GAAG,IAAI,YAAY,EAA2B,CAAC;CAQhE;AAMD,MAAe,yBAAyB;IAC7B,OAAO,GAAG,IAAI,YAAY,EAAmC,CAAC;CAkBxE;AAED,OAAO,EACH,iBAAiB,EACjB,yBAAyB,GAC5B,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { TypeRPCConnection, TypeRPCConnectionProvider } from "./basic.js";
2
+ /** 基于http的connection和provider */
3
+ declare class TypeRPCConnectionHTTP extends TypeRPCConnection {
4
+ private config;
5
+ private id;
6
+ private closed;
7
+ constructor(config: {
8
+ side: 'client' | 'server';
9
+ target?: string;
10
+ });
11
+ private makeId;
12
+ request(data: string): Promise<string>;
13
+ getId(): string;
14
+ close(): boolean;
15
+ isClosed(): boolean;
16
+ }
17
+ type TypeRPCConnectionProviderHTTPServer = import('http').Server;
18
+ type TypeRPCConnectionProviderHTTPConfig = {
19
+ server?: TypeRPCConnectionProviderHTTPServer;
20
+ };
21
+ type TypeRPCConnectionProviderHTTPMiddleware = (req: any, res: any) => void;
22
+ declare class TypeRPCConnectionProviderHTTP extends TypeRPCConnectionProvider {
23
+ config: TypeRPCConnectionProviderHTTPConfig;
24
+ server: TypeRPCConnectionProviderHTTPServer | null;
25
+ private middlewares;
26
+ constructor(config?: TypeRPCConnectionProviderHTTPConfig);
27
+ use(middleware: TypeRPCConnectionProviderHTTPMiddleware): void;
28
+ private initServer;
29
+ private createServer;
30
+ listen(config: {
31
+ port: number;
32
+ host?: string;
33
+ }): Promise<boolean>;
34
+ close(): Promise<boolean>;
35
+ connect(target: string): Promise<TypeRPCConnectionHTTP>;
36
+ }
37
+ export { TypeRPCConnectionHTTP, TypeRPCConnectionProviderHTTP, };
38
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/connecitons/http.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAG1E,iCAAiC;AACjC,cAAM,qBAAsB,SAAQ,iBAAiB;IAKrC,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,EAAE,CAAQ;IAClB,OAAO,CAAC,MAAM,CAAiB;gBAEX,MAAM,EAAC;QACvB,IAAI,EAAC,QAAQ,GAAC,QAAQ,CAAC;QACvB,MAAM,CAAC,EAAC,MAAM,CAAC;KAClB;IAKD,OAAO,CAAC,MAAM;IAIR,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB5C,KAAK,IAAI,MAAM;IAIf,KAAK,IAAI,OAAO;IAKhB,QAAQ,IAAI,OAAO;CAItB;AAED,KAAK,mCAAmC,GAAG,OAAO,MAAM,EAAE,MAAM,CAAC;AAEjE,KAAK,mCAAmC,GAAG;IACvC,MAAM,CAAC,EAAC,mCAAmC,CAAC;CAC/C,CAAA;AAED,KAAK,uCAAuC,GAAG,CAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,KAAK,IAAI,CAAC;AAEzE,cAAM,6BAA8B,SAAQ,yBAAyB;IAE1D,MAAM,EAAC,mCAAmC,CAAC;IAC3C,MAAM,EAAC,mCAAmC,GAAG,IAAI,CAAQ;IAChE,OAAO,CAAC,WAAW,CAAgD;gBAEvD,MAAM,CAAC,EAAC,mCAAmC;IAYhD,GAAG,CAAC,UAAU,EAAC,uCAAuC;IAI7D,OAAO,CAAC,UAAU;YAmCJ,YAAY;IAQpB,MAAM,CAAC,MAAM,EAAC;QAChB,IAAI,EAAC,MAAM,CAAC;QACZ,IAAI,CAAC,EAAC,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBpB,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAenB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAQhE;AAED,OAAO,EACH,qBAAqB,EACrB,6BAA6B,GAChC,CAAA"}
@@ -0,0 +1,143 @@
1
+ import { IdMaker } from "../utils.js";
2
+ import { TypeRPCConnection, TypeRPCConnectionProvider } from "./basic.js";
3
+ /** 基于http的connection和provider */
4
+ class TypeRPCConnectionHTTP extends TypeRPCConnection {
5
+ config;
6
+ id;
7
+ closed = false;
8
+ constructor(config) {
9
+ super();
10
+ this.config = config;
11
+ this.id = this.makeId();
12
+ }
13
+ makeId() {
14
+ return IdMaker.makeId();
15
+ }
16
+ async request(data) {
17
+ if (this.config.side == 'server') {
18
+ throw new Error("The server connection cannot send RPC requests because the current connection is not bidirectional");
19
+ }
20
+ if (!this.config.target) {
21
+ throw new Error("Client connection must have target");
22
+ }
23
+ // 发起请求
24
+ const response = await fetch(`http://${this.config.target}`, {
25
+ method: 'POST',
26
+ body: data,
27
+ headers: {
28
+ // 必须指定typerpc为1,否则服务器会认为这是一个普通的POST请求
29
+ typerpc: '1',
30
+ }
31
+ }).then((res) => {
32
+ return res.text();
33
+ });
34
+ return response;
35
+ }
36
+ getId() {
37
+ return this.id;
38
+ }
39
+ close() {
40
+ this.closed = true;
41
+ return true; // http connection 关闭时,直接返回true
42
+ }
43
+ isClosed() {
44
+ return this.closed;
45
+ }
46
+ }
47
+ class TypeRPCConnectionProviderHTTP extends TypeRPCConnectionProvider {
48
+ config;
49
+ server = null;
50
+ middlewares = [];
51
+ constructor(config) {
52
+ super();
53
+ const defaultConfig = {};
54
+ this.config = { ...defaultConfig, ...config };
55
+ this.server = this.config.server || null;
56
+ if (this.server) {
57
+ this.initServer(this.server);
58
+ }
59
+ }
60
+ use(middleware) {
61
+ this.middlewares.push(middleware);
62
+ }
63
+ initServer(server) {
64
+ server.on('request', (req, res) => {
65
+ // 如果请求是不是POST,直接忽略
66
+ // 如果请求头没有typerpc=1,直接忽略
67
+ if (req.method !== 'POST'
68
+ || req.headers['typerpc'] !== '1') {
69
+ // 调用中间件
70
+ this.middlewares.forEach((middleware) => {
71
+ middleware(req, res);
72
+ });
73
+ return;
74
+ }
75
+ let data = '';
76
+ req.on('data', (chunk) => {
77
+ data += chunk.toString();
78
+ });
79
+ req.on('end', () => {
80
+ // 创建一个connection
81
+ const connection = new TypeRPCConnectionHTTP({
82
+ side: 'server',
83
+ });
84
+ this.emitter.emit('connection', connection);
85
+ connection.emitter.emit('request', {
86
+ data: data,
87
+ response: (data) => {
88
+ res.end(data);
89
+ connection.close();
90
+ }
91
+ });
92
+ });
93
+ });
94
+ }
95
+ async createServer() {
96
+ const httpSupport = await import("http").catch(() => null);
97
+ if (!httpSupport) {
98
+ throw new Error("http module not found");
99
+ }
100
+ return httpSupport.default.createServer();
101
+ }
102
+ async listen(config) {
103
+ if (!this.server) {
104
+ this.server = await this.createServer();
105
+ this.initServer(this.server);
106
+ }
107
+ return new Promise((resolve) => {
108
+ if (!this.server) {
109
+ throw new Error("Listen before server created");
110
+ }
111
+ this.server.listen({
112
+ port: config.port,
113
+ host: config.host,
114
+ }, () => {
115
+ resolve(true);
116
+ });
117
+ });
118
+ }
119
+ close() {
120
+ return new Promise((resolve, reject) => {
121
+ if (!this.server) {
122
+ return true;
123
+ }
124
+ this.server.close((err) => {
125
+ if (err) {
126
+ reject(err);
127
+ }
128
+ resolve(true);
129
+ });
130
+ this.server = null;
131
+ });
132
+ }
133
+ async connect(target) {
134
+ const connection = new TypeRPCConnectionHTTP({
135
+ side: 'client',
136
+ target,
137
+ });
138
+ this.emitter.emit('connection', connection);
139
+ return connection;
140
+ }
141
+ }
142
+ export { TypeRPCConnectionHTTP, TypeRPCConnectionProviderHTTP, };
143
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/connecitons/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { TypedEmitter } from '../utils.js';
2
+ import { TypeRPCConnection, TypeRPCConnectionProvider } from './basic.js';
3
+ type TypeRPCConnectionMessageEvents = {
4
+ receive: (data: string) => void;
5
+ };
6
+ declare class TypeRPCConnectionSocket extends TypeRPCConnection {
7
+ private socket;
8
+ msgEmitter: TypedEmitter<TypeRPCConnectionMessageEvents>;
9
+ private currentId;
10
+ private requests;
11
+ constructor(socket: {
12
+ id: string;
13
+ send: (data: string) => void;
14
+ close: () => boolean;
15
+ isClosed: () => boolean;
16
+ });
17
+ request(data: string): Promise<string>;
18
+ getId(): string;
19
+ close(): boolean;
20
+ isClosed(): boolean;
21
+ }
22
+ declare class TypeRPCConnectionProviderSocket extends TypeRPCConnectionProvider {
23
+ private server;
24
+ private sockets;
25
+ listen(config: {
26
+ port: number;
27
+ hostname?: string;
28
+ }): Promise<boolean>;
29
+ close(): Promise<boolean>;
30
+ connect(target: string): Promise<TypeRPCConnection>;
31
+ }
32
+ export { TypeRPCConnectionSocket, TypeRPCConnectionProviderSocket, };
33
+ //# sourceMappingURL=socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/connecitons/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAQ1E,KAAK,8BAA8B,GAAG;IAClC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAA;AACD,cAAM,uBAAwB,SAAQ,iBAAiB;IAOvC,OAAO,CAAC,MAAM;IANnB,UAAU,+CAAsD;IACvE,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAED;gBAEK,MAAM,EAAE;QACxB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,KAAK,EAAE,MAAM,OAAO,CAAC;QACrB,QAAQ,EAAE,MAAM,OAAO,CAAC;KAC3B;IA2BK,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB5C,KAAK,IAAI,MAAM;IAGf,KAAK,IAAI,OAAO;IAGhB,QAAQ,IAAI,OAAO;CAItB;AAED,cAAM,+BAAgC,SAAQ,yBAAyB;IAEnE,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,OAAO,CAAwC;IAEjD,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAkEtE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAmB/B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAmEtD;AAED,OAAO,EACH,uBAAuB,EACvB,+BAA+B,GAClC,CAAA"}
@@ -0,0 +1,210 @@
1
+ import { IdMaker, TypedEmitter } from '../utils.js';
2
+ import { TypeRPCConnection, TypeRPCConnectionProvider } from './basic.js';
3
+ class TypeRPCConnectionSocket extends TypeRPCConnection {
4
+ socket;
5
+ msgEmitter = new TypedEmitter();
6
+ currentId = 1;
7
+ requests = new Map();
8
+ constructor(socket) {
9
+ super();
10
+ this.socket = socket;
11
+ // 处理外部请求
12
+ this.msgEmitter.on('receive', (data) => {
13
+ const recivePlayload = JSON.parse(data);
14
+ if (recivePlayload.type == 'request'
15
+ && recivePlayload.id) {
16
+ this.emitter.emit('request', {
17
+ data: recivePlayload.data,
18
+ response: (data) => {
19
+ const sendPlayout = {
20
+ type: 'response',
21
+ id: recivePlayload.id,
22
+ data: data,
23
+ };
24
+ this.socket.send(JSON.stringify(sendPlayout));
25
+ }
26
+ });
27
+ }
28
+ else if (recivePlayload.type == 'response'
29
+ && recivePlayload.id) {
30
+ this.requests.get(recivePlayload.id)?.resolve(recivePlayload.data);
31
+ }
32
+ });
33
+ }
34
+ async request(data) {
35
+ const requestId = `${this.currentId++}`;
36
+ const payload = {
37
+ type: 'request',
38
+ id: requestId,
39
+ data: data,
40
+ };
41
+ const requestPromise = new Promise((resolve) => {
42
+ this.requests.set(requestId, {
43
+ resolve: resolve
44
+ });
45
+ // 发送数据
46
+ this.socket.send(JSON.stringify(payload));
47
+ }).finally(() => {
48
+ this.requests.delete(requestId);
49
+ });
50
+ return await requestPromise;
51
+ }
52
+ getId() {
53
+ return this.socket.id;
54
+ }
55
+ close() {
56
+ return this.socket.close();
57
+ }
58
+ isClosed() {
59
+ return this.socket.isClosed();
60
+ }
61
+ }
62
+ class TypeRPCConnectionProviderSocket extends TypeRPCConnectionProvider {
63
+ server;
64
+ sockets = new Set();
65
+ async listen(config) {
66
+ const net = await import('net').catch(() => null);
67
+ if (!net) {
68
+ throw new Error("net module not found");
69
+ }
70
+ const server = net.createServer((socket) => {
71
+ this.sockets.add(socket);
72
+ const connection = new TypeRPCConnectionSocket({
73
+ id: IdMaker.makeId(),
74
+ send: (data) => {
75
+ const buffer = Buffer.from(data);
76
+ const length = Buffer.alloc(4);
77
+ length.writeUInt32BE(buffer.length, 0);
78
+ socket.write(length);
79
+ socket.write(buffer);
80
+ },
81
+ close: () => {
82
+ socket.end();
83
+ return true;
84
+ },
85
+ isClosed: () => {
86
+ return socket.destroyed;
87
+ },
88
+ });
89
+ this.emitter.emit('connection', connection);
90
+ let buffer = Buffer.alloc(0);
91
+ let expectedLength = null;
92
+ socket.on('data', (chunk) => {
93
+ buffer = Buffer.concat([buffer, chunk]);
94
+ while (buffer.length >= 4) {
95
+ if (expectedLength === null) {
96
+ // 读取消息长度
97
+ expectedLength = buffer.readUInt32BE(0);
98
+ buffer = Buffer.from(buffer.subarray(4));
99
+ }
100
+ if (buffer.length >= expectedLength) {
101
+ // 读取完整消息
102
+ const message = buffer.subarray(0, expectedLength).toString();
103
+ buffer = Buffer.from(buffer.subarray(expectedLength));
104
+ expectedLength = null;
105
+ // 处理消息
106
+ connection.msgEmitter.emit('receive', message);
107
+ }
108
+ else {
109
+ break;
110
+ }
111
+ }
112
+ });
113
+ socket.on('end', () => {
114
+ connection.close();
115
+ });
116
+ socket.on('close', () => {
117
+ this.sockets.delete(socket);
118
+ });
119
+ });
120
+ this.server = server;
121
+ return new Promise((resolve) => {
122
+ server.listen(config.port, config.hostname, () => {
123
+ resolve(true);
124
+ });
125
+ });
126
+ }
127
+ async close() {
128
+ return new Promise((resolve, reject) => {
129
+ if (!this.server) {
130
+ return resolve(true);
131
+ }
132
+ // 关闭服务器,停止所有连接
133
+ this.server.close(() => {
134
+ resolve(true);
135
+ });
136
+ this.server = undefined;
137
+ // 关闭所有已建立的连接
138
+ for (const socket of this.sockets) {
139
+ socket.end();
140
+ }
141
+ this.sockets.clear();
142
+ });
143
+ }
144
+ connect(target) {
145
+ return new Promise(async (resolve, reject) => {
146
+ const net = await import('net').catch(() => null);
147
+ if (!net) {
148
+ reject(new Error("net module not found"));
149
+ return;
150
+ }
151
+ const socket = new net.Socket();
152
+ const [host, port] = target.split(':');
153
+ if (!host || !port
154
+ || !Number.isInteger(Number(port))) {
155
+ reject(new Error('target format error'));
156
+ return;
157
+ }
158
+ const connection = new TypeRPCConnectionSocket({
159
+ id: IdMaker.makeId(),
160
+ send: (data) => {
161
+ const buffer = Buffer.from(data);
162
+ const length = Buffer.alloc(4);
163
+ length.writeUInt32BE(buffer.length, 0);
164
+ socket.write(length);
165
+ socket.write(buffer);
166
+ },
167
+ close: () => {
168
+ socket.end();
169
+ return true;
170
+ },
171
+ isClosed: () => {
172
+ return socket.destroyed;
173
+ }
174
+ });
175
+ this.emitter.emit('connection', connection);
176
+ socket.on('connect', () => {
177
+ resolve(connection);
178
+ });
179
+ let buffer = Buffer.alloc(0);
180
+ let expectedLength = null;
181
+ socket.on('data', (chunk) => {
182
+ buffer = Buffer.concat([buffer, chunk]);
183
+ while (buffer.length >= 4) {
184
+ if (expectedLength === null) {
185
+ // 读取消息长度
186
+ expectedLength = buffer.readUInt32BE(0);
187
+ buffer = Buffer.from(buffer.subarray(4));
188
+ }
189
+ if (buffer.length >= expectedLength) {
190
+ // 读取完整消息
191
+ const message = buffer.subarray(0, expectedLength).toString();
192
+ buffer = Buffer.from(buffer.subarray(expectedLength));
193
+ expectedLength = null;
194
+ // 处理消息
195
+ connection.msgEmitter.emit('receive', message);
196
+ }
197
+ else {
198
+ break;
199
+ }
200
+ }
201
+ });
202
+ socket.on('close', () => {
203
+ connection.close();
204
+ });
205
+ socket.connect(Number(port), host);
206
+ });
207
+ }
208
+ }
209
+ export { TypeRPCConnectionSocket, TypeRPCConnectionProviderSocket, };
210
+ //# sourceMappingURL=socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/connecitons/socket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { TypedEmitter } from "../utils.js";
2
+ import { TypeRPCConnection, TypeRPCConnectionProvider } from "./basic.js";
3
+ type TypeRPCConnectionMessageEvents = {
4
+ receive: (data: string) => void;
5
+ };
6
+ declare class TypeRPCConnectionSocketIO extends TypeRPCConnection {
7
+ private socket;
8
+ msgEmitter: TypedEmitter<TypeRPCConnectionMessageEvents>;
9
+ private currentId;
10
+ private requests;
11
+ constructor(socket: {
12
+ id: string;
13
+ send: (data: string) => void;
14
+ close: () => boolean;
15
+ isClosed: () => boolean;
16
+ });
17
+ request(data: string): Promise<string>;
18
+ getId(): string;
19
+ close(): boolean;
20
+ isClosed(): boolean;
21
+ }
22
+ declare class TypeRPCConnectionProviderSocketIO extends TypeRPCConnectionProvider {
23
+ private io;
24
+ listen(config: {
25
+ port: number;
26
+ hostname?: string;
27
+ }): Promise<boolean>;
28
+ close(): Promise<boolean>;
29
+ connect(target: string): Promise<TypeRPCConnection>;
30
+ }
31
+ export { TypeRPCConnectionSocketIO, TypeRPCConnectionProviderSocketIO, };
32
+ //# sourceMappingURL=socketio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socketio.d.ts","sourceRoot":"","sources":["../../src/connecitons/socketio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAS1E,KAAK,8BAA8B,GAAG;IAClC,OAAO,EAAC,CAAC,IAAI,EAAC,MAAM,KAAK,IAAI,CAAC;CACjC,CAAA;AACD,cAAM,yBAA0B,SAAQ,iBAAiB;IASzC,OAAO,CAAC,MAAM;IARnB,UAAU,+CAAsD;IAEvE,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,QAAQ,CAED;gBAEK,MAAM,EAAC;QACvB,EAAE,EAAC,MAAM,CAAC;QACV,IAAI,EAAC,CAAC,IAAI,EAAC,MAAM,KAAK,IAAI,CAAC;QAC3B,KAAK,EAAC,MAAM,OAAO,CAAC;QACpB,QAAQ,EAAC,MAAM,OAAO,CAAC;KAC1B;IA6BK,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB5C,KAAK,IAAI,MAAM;IAGf,KAAK,IAAI,OAAO;IAIhB,QAAQ,IAAI,OAAO;CAItB;AAED,cAAM,iCAAkC,SAAQ,yBAAyB;IAErE,OAAO,CAAC,EAAE,CAA0C;IAE9C,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAgDtE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAkBzB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAiC5D;AAED,OAAO,EACH,yBAAyB,EACzB,iCAAiC,GACpC,CAAA"}