@cloudpss/ubrpc 0.4.26 → 0.4.28
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/auth.d.ts +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +2 -1
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/server.d.ts +19 -7
- package/dist/server.js +13 -6
- package/dist/server.js.map +1 -1
- package/dist/socket.d.ts +1 -1
- package/dist/socket.js.map +1 -1
- package/dist/types/payload.d.ts +2 -1
- package/dist/types/utils.d.ts +5 -3
- package/dist/types/utils.js +5 -0
- package/dist/types/utils.js.map +1 -1
- package/package.json +4 -4
- package/src/auth.ts +1 -1
- package/src/client.ts +3 -2
- package/src/index.ts +2 -0
- package/src/server.ts +25 -9
- package/src/socket.ts +7 -4
- package/src/types/payload.ts +3 -1
- package/src/types/utils.ts +14 -8
- package/tests/client.js +1 -1
- package/tests/server.js +3 -1
package/dist/auth.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { ConnectionID, RpcMetadata } from './types/payload.js';
|
|
2
2
|
/** 接受认证消息 */
|
|
3
|
-
export declare function waitAuth(socket: WebSocket, seq?: number, id?: ConnectionID): Promise<[number, ConnectionID, RpcMetadata]>;
|
|
3
|
+
export declare function waitAuth(socket: WebSocket, seq?: number, id?: ConnectionID): Promise<[seq: number, id: ConnectionID, meta: RpcMetadata]>;
|
package/dist/client.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { RpcSocket } from './socket.js';
|
|
|
2
2
|
import type { RpcMetadata } from './types/payload.js';
|
|
3
3
|
import type { RpcObject } from './types/utils.js';
|
|
4
4
|
/** 由 WS Client 建立的 RPC 连接 */
|
|
5
|
-
export declare class RpcClientSocket<TRemote extends
|
|
5
|
+
export declare class RpcClientSocket<TRemote extends object, TLocal extends object> extends RpcSocket<TRemote, TLocal> {
|
|
6
6
|
constructor(url: string | URL, metadata?: RpcMetadata, local?: RpcObject<TLocal>);
|
|
7
7
|
readonly url: string;
|
|
8
8
|
/** @inheritdoc */
|
package/dist/client.js
CHANGED
|
@@ -31,7 +31,8 @@ export class RpcClientSocket extends RpcSocket {
|
|
|
31
31
|
/** @inheritdoc */
|
|
32
32
|
onClose(ev) {
|
|
33
33
|
super.onClose(ev);
|
|
34
|
-
|
|
34
|
+
const code = ev.code;
|
|
35
|
+
if (code === WEB_SOCKET_STATUS_CODES.NORMAL_CLOSURE || code === APP_CODE.AUTH_ERROR)
|
|
35
36
|
return;
|
|
36
37
|
setTimeout(() => {
|
|
37
38
|
this.connect();
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,6BAA6B;AAC7B,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,6BAA6B;AAC7B,MAAM,OAAO,eAA+D,SAAQ,SAA0B;IAC1G,YAAY,GAAiB,EAAE,QAAsB,EAAE,KAAyB;QAC5E,KAAK,CAAC,EAAE,EAAkB,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,OAAO,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,kBAAkB;IACC,KAAK,CAAC,UAAU;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;YACjB,GAAG;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;SACrC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,AAAD,EAAG,QAAQ,CAAC,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,kBAAkB;IACC,OAAO,CAAC,EAAc;QACrC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,EAAE,CAAC,IAA0C,CAAC;QAC3D,IAAI,IAAI,KAAK,uBAAuB,CAAC,cAAc,IAAI,IAAI,KAAK,QAAQ,CAAC,UAAU;YAAE,OAAO;QAE5F,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC;IAED,WAAW;IACD,OAAO;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;YAClB,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC,EAAE,IAAI,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { RpcClientSocket } from './client.js';
|
|
2
2
|
export { RpcSocket } from './socket.js';
|
|
3
3
|
export { RpcServer, RpcServerSocket } from './server.js';
|
|
4
|
+
export type { ConnectionID, RpcMetadata } from './types/payload.js';
|
|
5
|
+
export type { ObservableLike, RpcObject } from './types/utils.js';
|
package/dist/server.d.ts
CHANGED
|
@@ -8,16 +8,28 @@ declare const kReplaceSocket: unique symbol;
|
|
|
8
8
|
type WebSocketWithMetadata = WebSocket & {
|
|
9
9
|
[kMetadata]: RpcMetadata;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* 客户端认证方法
|
|
13
|
+
* @param metadata 客户端传入的认证元数据
|
|
14
|
+
* @returns 服务端返回客户端的认证元数据
|
|
15
|
+
* @throws 认证失败时抛出异常
|
|
16
|
+
*/
|
|
17
|
+
type RpcClientAuthenticator = (metadata: RpcMetadata) => RpcMetadata | Promise<RpcMetadata>;
|
|
11
18
|
/** 由 WS Server 建立的 RPC 连接组 */
|
|
12
|
-
export declare class RpcServer<TRemote extends
|
|
13
|
-
/**
|
|
14
|
-
readonly authenticator:
|
|
15
|
-
constructor(
|
|
16
|
-
/**
|
|
17
|
-
|
|
19
|
+
export declare class RpcServer<TRemote extends object, TLocal extends object> {
|
|
20
|
+
/** 客户端认证方法 */
|
|
21
|
+
readonly authenticator: RpcClientAuthenticator;
|
|
22
|
+
constructor(
|
|
23
|
+
/** 服务端 RPC 实现 */
|
|
24
|
+
local?: RpcObject<TLocal> | ((socket: RpcServerSocket<TRemote, TLocal>) => RpcObject<TLocal>),
|
|
25
|
+
/** 客户端认证方法 */
|
|
26
|
+
authenticator?: RpcClientAuthenticator);
|
|
18
27
|
/** 用于响应调用的本地对象 */
|
|
19
28
|
readonly local?: (socket: RpcServerSocket<TRemote, TLocal>) => RpcObject<TLocal>;
|
|
20
|
-
|
|
29
|
+
/** 已建立连接的客户端 */
|
|
30
|
+
protected readonly _sockets: Map<ConnectionID, RpcServerSocket<TRemote, TLocal>>;
|
|
31
|
+
/** 已建立连接的客户端 */
|
|
32
|
+
sockets(): ReadonlyMap<ConnectionID, RpcServerSocket<TRemote, TLocal>>;
|
|
21
33
|
/** WebSocket 连接后调用此方法建立 RPC 连接 */
|
|
22
34
|
connect(socket: WebSocket): Promise<RpcServerSocket<TRemote, TLocal>>;
|
|
23
35
|
/** 认证客户端 */
|
package/dist/server.js
CHANGED
|
@@ -9,11 +9,14 @@ const kMetadata = Symbol('kMetadata');
|
|
|
9
9
|
const kReplaceSocket = Symbol('kReplaceSocket');
|
|
10
10
|
/** 由 WS Server 建立的 RPC 连接组 */
|
|
11
11
|
export class RpcServer {
|
|
12
|
-
constructor(
|
|
13
|
-
/**
|
|
12
|
+
constructor(
|
|
13
|
+
/** 服务端 RPC 实现 */
|
|
14
|
+
local,
|
|
15
|
+
/** 客户端认证方法 */
|
|
14
16
|
authenticator = () => ({})) {
|
|
15
17
|
this.authenticator = authenticator;
|
|
16
|
-
|
|
18
|
+
/** 已建立连接的客户端 */
|
|
19
|
+
this._sockets = new Map();
|
|
17
20
|
this.disconnectingSockets = new Map();
|
|
18
21
|
if (local == null) {
|
|
19
22
|
this.local = undefined;
|
|
@@ -25,15 +28,19 @@ export class RpcServer {
|
|
|
25
28
|
this.local = () => local;
|
|
26
29
|
}
|
|
27
30
|
}
|
|
31
|
+
/** 已建立连接的客户端 */
|
|
32
|
+
sockets() {
|
|
33
|
+
return this._sockets;
|
|
34
|
+
}
|
|
28
35
|
/** WebSocket 连接后调用此方法建立 RPC 连接 */
|
|
29
36
|
async connect(socket) {
|
|
30
37
|
const s = socket;
|
|
31
38
|
const [id, metadata] = await this.authSocket(socket);
|
|
32
39
|
s[kMetadata] = metadata;
|
|
33
|
-
let client = this.
|
|
40
|
+
let client = this._sockets.get(id);
|
|
34
41
|
if (!client) {
|
|
35
42
|
client = new RpcServerSocket(id, this);
|
|
36
|
-
this.
|
|
43
|
+
this._sockets.set(id, client);
|
|
37
44
|
}
|
|
38
45
|
else {
|
|
39
46
|
const tid = this.disconnectingSockets.get(id);
|
|
@@ -84,7 +91,7 @@ export class RpcServer {
|
|
|
84
91
|
const delay = ev.code === 1000 ? 0 : 5000;
|
|
85
92
|
const tid = setTimeout(() => {
|
|
86
93
|
socket.destroy();
|
|
87
|
-
this.
|
|
94
|
+
this._sockets.delete(socket.id);
|
|
88
95
|
this.disconnectingSockets.delete(socket.id);
|
|
89
96
|
}, delay);
|
|
90
97
|
this.disconnectingSockets.set(socket.id, tid);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACpC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACtC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/socket.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Observable } from 'rxjs';
|
|
|
2
2
|
import type { ConnectionID, RpcCallPayload, RpcMetadata, RpcNotifyPayload, RpcPayload, RpcSubscribePayload } from './types/payload.js';
|
|
3
3
|
import type { Methods, Notifications, RpcObject, RpcParameters, RpcReturns, Subjects } from './types/utils.js';
|
|
4
4
|
/** RPC 连接 */
|
|
5
|
-
export declare abstract class RpcSocket<TRemote extends
|
|
5
|
+
export declare abstract class RpcSocket<TRemote extends object, TLocal extends object> {
|
|
6
6
|
readonly id: ConnectionID;
|
|
7
7
|
constructor(id: ConnectionID, local?: RpcObject<TLocal>);
|
|
8
8
|
protected _localMetadata?: RpcMetadata;
|
package/dist/socket.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAkBlE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEvF,aAAa;AACb,MAAM,OAAgB,SAAS;IAC3B,
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"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"}
|
package/dist/types/payload.d.ts
CHANGED
package/dist/types/utils.d.ts
CHANGED
|
@@ -22,11 +22,13 @@ export type Subjects<T> = {
|
|
|
22
22
|
/** RPC 调用的参数 */
|
|
23
23
|
export type RpcParameters<T> = T extends (...args: infer R) => any ? R : never;
|
|
24
24
|
/** RPC 调用的返回 */
|
|
25
|
-
|
|
25
|
+
type RpcReturnsMap<R> = Awaited<R> extends ObservableLike<infer U> ? U : Awaited<R>;
|
|
26
|
+
/** RPC 调用的返回 */
|
|
27
|
+
export type RpcReturns<T> = T extends (...args: any[]) => infer R ? RpcReturnsMap<R> : never;
|
|
26
28
|
/** RPC 调用函数的实现 */
|
|
27
|
-
type RpcField<T> = T extends (...args: infer P) => infer R ? Awaited<R> extends ObservableReturn ? (...args: P) => ObservableLike<
|
|
29
|
+
type RpcField<T> = T extends (...args: infer P) => infer R ? Awaited<R> extends ObservableReturn ? (...args: P) => ObservableLike<RpcReturnsMap<R>> | PromiseLike<ObservableLike<RpcReturnsMap<R>>> : (...args: P) => RpcReturnsMap<R> | PromiseLike<RpcReturnsMap<R>> : never;
|
|
28
30
|
/** RPC 调用对象的实现 */
|
|
29
31
|
export type RpcObject<T> = {
|
|
30
|
-
[K in
|
|
32
|
+
[K in keyof T as K & (Subjects<T> | Methods<T>)]: RpcField<T[K]>;
|
|
31
33
|
};
|
|
32
34
|
export {};
|
package/dist/types/utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export {};
|
|
2
2
|
// interface A {
|
|
3
3
|
// field: number;
|
|
4
|
+
// /** methodA */
|
|
4
5
|
// methodA(x: number): number | undefined;
|
|
5
6
|
// methodB: (x: string, y: number) => Promise<number>;
|
|
6
7
|
// readonly methodC: () => Iterable<number>;
|
|
@@ -19,4 +20,8 @@ export {};
|
|
|
19
20
|
// type X = Methods<A>;
|
|
20
21
|
// type Y = Subjects<A>;
|
|
21
22
|
// type Z = Notifications<A>;
|
|
23
|
+
// type R = RpcObject<A>;
|
|
24
|
+
// type Test = R['field'];
|
|
25
|
+
// declare const r: R;
|
|
26
|
+
// r.subjectA;
|
|
22
27
|
//# sourceMappingURL=utils.js.map
|
package/dist/types/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/types/utils.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/types/utils.ts"],"names":[],"mappings":";AA6DA,gBAAgB;AAChB,qBAAqB;AACrB,qBAAqB;AACrB,8CAA8C;AAC9C,0DAA0D;AAC1D,gDAAgD;AAChD,gEAAgE;AAChE,+CAA+C;AAC/C,mDAAmD;AACnD,6BAA6B;AAC7B,mEAAmE;AACnE,0DAA0D;AAC1D,+CAA+C;AAC/C,4DAA4D;AAC5D,8DAA8D;AAC9D,8CAA8C;AAC9C,2DAA2D;AAC3D,IAAI;AAEJ,uBAAuB;AACvB,wBAAwB;AACxB,6BAA6B;AAE7B,yBAAyB;AACzB,0BAA0B;AAE1B,sBAAsB;AACtB,cAAc"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudpss/ubrpc",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.28",
|
|
4
4
|
"author": "CloudPSS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
"test": "cross-env NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@cloudpss/ubjson": "~0.4.
|
|
29
|
-
"@cloudpss/ws": "~0.4.
|
|
28
|
+
"@cloudpss/ubjson": "~0.4.28",
|
|
29
|
+
"@cloudpss/ws": "~0.4.28",
|
|
30
30
|
"rxjs": "^7.8.1",
|
|
31
31
|
"uuid": "^9.0.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@types/uuid": "^9.0.
|
|
34
|
+
"@types/uuid": "^9.0.2"
|
|
35
35
|
}
|
|
36
36
|
}
|
package/src/auth.ts
CHANGED
|
@@ -10,7 +10,7 @@ export function waitAuth(
|
|
|
10
10
|
socket: WebSocket,
|
|
11
11
|
seq?: number,
|
|
12
12
|
id?: ConnectionID,
|
|
13
|
-
): Promise<[number, ConnectionID, RpcMetadata]> {
|
|
13
|
+
): Promise<[seq: number, id: ConnectionID, meta: RpcMetadata]> {
|
|
14
14
|
return new Promise((resolve, reject) => {
|
|
15
15
|
const isResponse = seq != null && id != null;
|
|
16
16
|
const timeout = setTimeout(() => {
|
package/src/client.ts
CHANGED
|
@@ -10,7 +10,7 @@ import { VERSION } from './version.js';
|
|
|
10
10
|
import { APP_CODE } from './codes.js';
|
|
11
11
|
|
|
12
12
|
/** 由 WS Client 建立的 RPC 连接 */
|
|
13
|
-
export class RpcClientSocket<TRemote extends
|
|
13
|
+
export class RpcClientSocket<TRemote extends object, TLocal extends object> extends RpcSocket<TRemote, TLocal> {
|
|
14
14
|
constructor(url: string | URL, metadata?: RpcMetadata, local?: RpcObject<TLocal>) {
|
|
15
15
|
super(v4() as ConnectionID, local);
|
|
16
16
|
this._localMetadata = metadata;
|
|
@@ -35,7 +35,8 @@ export class RpcClientSocket<TRemote extends {}, TLocal extends {}> extends RpcS
|
|
|
35
35
|
/** @inheritdoc */
|
|
36
36
|
protected override onClose(ev: CloseEvent): void {
|
|
37
37
|
super.onClose(ev);
|
|
38
|
-
|
|
38
|
+
const code = ev.code as WEB_SOCKET_STATUS_CODES | APP_CODE;
|
|
39
|
+
if (code === WEB_SOCKET_STATUS_CODES.NORMAL_CLOSURE || code === APP_CODE.AUTH_ERROR) return;
|
|
39
40
|
|
|
40
41
|
setTimeout(() => {
|
|
41
42
|
this.connect();
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { RpcClientSocket } from './client.js';
|
|
2
2
|
export { RpcSocket } from './socket.js';
|
|
3
3
|
export { RpcServer, RpcServerSocket } from './server.js';
|
|
4
|
+
export type { ConnectionID, RpcMetadata } from './types/payload.js';
|
|
5
|
+
export type { ObservableLike, RpcObject } from './types/utils.js';
|
package/src/server.ts
CHANGED
|
@@ -13,13 +13,21 @@ const kReplaceSocket = Symbol('kReplaceSocket');
|
|
|
13
13
|
|
|
14
14
|
/** 认证过的 socket */
|
|
15
15
|
type WebSocketWithMetadata = WebSocket & { [kMetadata]: RpcMetadata };
|
|
16
|
+
/**
|
|
17
|
+
* 客户端认证方法
|
|
18
|
+
* @param metadata 客户端传入的认证元数据
|
|
19
|
+
* @returns 服务端返回客户端的认证元数据
|
|
20
|
+
* @throws 认证失败时抛出异常
|
|
21
|
+
*/
|
|
22
|
+
type RpcClientAuthenticator = (metadata: RpcMetadata) => RpcMetadata | Promise<RpcMetadata>;
|
|
16
23
|
|
|
17
24
|
/** 由 WS Server 建立的 RPC 连接组 */
|
|
18
|
-
export class RpcServer<TRemote extends
|
|
25
|
+
export class RpcServer<TRemote extends object, TLocal extends object> {
|
|
19
26
|
constructor(
|
|
27
|
+
/** 服务端 RPC 实现 */
|
|
20
28
|
local?: RpcObject<TLocal> | ((socket: RpcServerSocket<TRemote, TLocal>) => RpcObject<TLocal>),
|
|
21
|
-
/**
|
|
22
|
-
readonly authenticator:
|
|
29
|
+
/** 客户端认证方法 */
|
|
30
|
+
readonly authenticator: RpcClientAuthenticator = () => ({}),
|
|
23
31
|
) {
|
|
24
32
|
if (local == null) {
|
|
25
33
|
this.local = undefined;
|
|
@@ -32,17 +40,22 @@ export class RpcServer<TRemote extends {}, TLocal extends {}> {
|
|
|
32
40
|
/** 用于响应调用的本地对象 */
|
|
33
41
|
readonly local?: (socket: RpcServerSocket<TRemote, TLocal>) => RpcObject<TLocal>;
|
|
34
42
|
|
|
35
|
-
|
|
43
|
+
/** 已建立连接的客户端 */
|
|
44
|
+
protected readonly _sockets = new Map<ConnectionID, RpcServerSocket<TRemote, TLocal>>();
|
|
45
|
+
/** 已建立连接的客户端 */
|
|
46
|
+
sockets(): ReadonlyMap<ConnectionID, RpcServerSocket<TRemote, TLocal>> {
|
|
47
|
+
return this._sockets;
|
|
48
|
+
}
|
|
36
49
|
|
|
37
50
|
/** WebSocket 连接后调用此方法建立 RPC 连接 */
|
|
38
51
|
async connect(socket: WebSocket): Promise<RpcServerSocket<TRemote, TLocal>> {
|
|
39
52
|
const s = socket as WebSocketWithMetadata;
|
|
40
53
|
const [id, metadata] = await this.authSocket(socket);
|
|
41
54
|
s[kMetadata] = metadata;
|
|
42
|
-
let client = this.
|
|
55
|
+
let client = this._sockets.get(id);
|
|
43
56
|
if (!client) {
|
|
44
57
|
client = new RpcServerSocket(id, this);
|
|
45
|
-
this.
|
|
58
|
+
this._sockets.set(id, client);
|
|
46
59
|
} else {
|
|
47
60
|
const tid = this.disconnectingSockets.get(id);
|
|
48
61
|
if (tid != null) {
|
|
@@ -86,13 +99,13 @@ export class RpcServer<TRemote extends {}, TLocal extends {}> {
|
|
|
86
99
|
}
|
|
87
100
|
}
|
|
88
101
|
|
|
89
|
-
private readonly disconnectingSockets = new Map<
|
|
102
|
+
private readonly disconnectingSockets = new Map<ConnectionID, ReturnType<typeof setTimeout>>();
|
|
90
103
|
/** WebSocket 断开时调用 */
|
|
91
104
|
[kOnClose](socket: RpcServerSocket<TRemote, TLocal>, ev: CloseEvent): void {
|
|
92
105
|
const delay = ev.code === 1000 ? 0 : 5000;
|
|
93
106
|
const tid = setTimeout(() => {
|
|
94
107
|
socket.destroy();
|
|
95
|
-
this.
|
|
108
|
+
this._sockets.delete(socket.id);
|
|
96
109
|
this.disconnectingSockets.delete(socket.id);
|
|
97
110
|
}, delay);
|
|
98
111
|
this.disconnectingSockets.set(socket.id, tid);
|
|
@@ -101,7 +114,10 @@ export class RpcServer<TRemote extends {}, TLocal extends {}> {
|
|
|
101
114
|
|
|
102
115
|
/** 由 WS Server 建立的 RPC 连接 */
|
|
103
116
|
export class RpcServerSocket<TRemote extends object, TLocal extends object> extends RpcSocket<TRemote, TLocal> {
|
|
104
|
-
constructor(
|
|
117
|
+
constructor(
|
|
118
|
+
id: ConnectionID,
|
|
119
|
+
readonly server: RpcServer<TRemote, TLocal>,
|
|
120
|
+
) {
|
|
105
121
|
super(id);
|
|
106
122
|
this.seq = 1;
|
|
107
123
|
}
|
package/src/socket.ts
CHANGED
|
@@ -21,8 +21,11 @@ import { send } from './utils/messaging.js';
|
|
|
21
21
|
import { decodePayload, deserializeError, serializeError } from './utils/serialize.js';
|
|
22
22
|
|
|
23
23
|
/** RPC 连接 */
|
|
24
|
-
export abstract class RpcSocket<TRemote extends
|
|
25
|
-
constructor(
|
|
24
|
+
export abstract class RpcSocket<TRemote extends object, TLocal extends object> {
|
|
25
|
+
constructor(
|
|
26
|
+
readonly id: ConnectionID,
|
|
27
|
+
local?: RpcObject<TLocal>,
|
|
28
|
+
) {
|
|
26
29
|
this.__local = local;
|
|
27
30
|
this.makeReady();
|
|
28
31
|
}
|
|
@@ -197,7 +200,7 @@ export abstract class RpcSocket<TRemote extends {}, TLocal extends {}> {
|
|
|
197
200
|
/** 调用本地方法 */
|
|
198
201
|
protected async localCall(payload: RpcCallPayload | RpcNotifyPayload): Promise<void> {
|
|
199
202
|
const noReturn = payload.type === 'notify';
|
|
200
|
-
const method = this.local ? this.local[payload.method as Methods<TLocal
|
|
203
|
+
const method = this.local ? this.local[payload.method as Methods<RpcObject<TLocal>>] : undefined;
|
|
201
204
|
const seq = payload.seq;
|
|
202
205
|
if (typeof method != 'function') {
|
|
203
206
|
if (noReturn) return;
|
|
@@ -218,7 +221,7 @@ export abstract class RpcSocket<TRemote extends {}, TLocal extends {}> {
|
|
|
218
221
|
private readonly localSubscription = new Map<number, Subscription>();
|
|
219
222
|
/** 调用本地方法 */
|
|
220
223
|
protected async localSubscribe(payload: RpcSubscribePayload): Promise<void> {
|
|
221
|
-
const method = this.local ? this.local[payload.method as Subjects<TLocal
|
|
224
|
+
const method = this.local ? this.local[payload.method as Subjects<RpcObject<TLocal>>] : undefined;
|
|
222
225
|
const seq = payload.seq;
|
|
223
226
|
if (typeof method != 'function') {
|
|
224
227
|
return this.sendPayload('publish', {
|
package/src/types/payload.ts
CHANGED
package/src/types/utils.ts
CHANGED
|
@@ -41,27 +41,27 @@ export type Subjects<T> = {
|
|
|
41
41
|
|
|
42
42
|
/** RPC 调用的参数 */
|
|
43
43
|
export type RpcParameters<T> = T extends (...args: infer R) => any ? R : never;
|
|
44
|
+
|
|
44
45
|
/** RPC 调用的返回 */
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
: Awaited<R>
|
|
49
|
-
: never;
|
|
46
|
+
type RpcReturnsMap<R> = Awaited<R> extends ObservableLike<infer U> ? U : Awaited<R>;
|
|
47
|
+
/** RPC 调用的返回 */
|
|
48
|
+
export type RpcReturns<T> = T extends (...args: any[]) => infer R ? RpcReturnsMap<R> : never;
|
|
50
49
|
|
|
51
50
|
/** RPC 调用函数的实现 */
|
|
52
51
|
type RpcField<T> = T extends (...args: infer P) => infer R
|
|
53
52
|
? Awaited<R> extends ObservableReturn
|
|
54
|
-
? (...args: P) => ObservableLike<
|
|
55
|
-
: (...args: P) =>
|
|
53
|
+
? (...args: P) => ObservableLike<RpcReturnsMap<R>> | PromiseLike<ObservableLike<RpcReturnsMap<R>>>
|
|
54
|
+
: (...args: P) => RpcReturnsMap<R> | PromiseLike<RpcReturnsMap<R>>
|
|
56
55
|
: never;
|
|
57
56
|
|
|
58
57
|
/** RPC 调用对象的实现 */
|
|
59
58
|
export type RpcObject<T> = {
|
|
60
|
-
[K in
|
|
59
|
+
[K in keyof T as K & (Subjects<T> | Methods<T>)]: RpcField<T[K]>;
|
|
61
60
|
};
|
|
62
61
|
|
|
63
62
|
// interface A {
|
|
64
63
|
// field: number;
|
|
64
|
+
// /** methodA */
|
|
65
65
|
// methodA(x: number): number | undefined;
|
|
66
66
|
// methodB: (x: string, y: number) => Promise<number>;
|
|
67
67
|
// readonly methodC: () => Iterable<number>;
|
|
@@ -81,3 +81,9 @@ export type RpcObject<T> = {
|
|
|
81
81
|
// type X = Methods<A>;
|
|
82
82
|
// type Y = Subjects<A>;
|
|
83
83
|
// type Z = Notifications<A>;
|
|
84
|
+
|
|
85
|
+
// type R = RpcObject<A>;
|
|
86
|
+
// type Test = R['field'];
|
|
87
|
+
|
|
88
|
+
// declare const r: R;
|
|
89
|
+
// r.subjectA;
|
package/tests/client.js
CHANGED
package/tests/server.js
CHANGED
|
@@ -9,6 +9,7 @@ const a = {
|
|
|
9
9
|
* @param {string} name 名字
|
|
10
10
|
*/
|
|
11
11
|
async hello(name) {
|
|
12
|
+
console.log('hello', name);
|
|
12
13
|
await Promise.resolve();
|
|
13
14
|
return `${this.greetings}${name}`;
|
|
14
15
|
},
|
|
@@ -32,7 +33,8 @@ const a = {
|
|
|
32
33
|
};
|
|
33
34
|
const rpc = new RpcServer(a, (meta) => {
|
|
34
35
|
console.log(meta);
|
|
35
|
-
throw new Error('B');
|
|
36
|
+
// throw new Error('B');
|
|
37
|
+
return {};
|
|
36
38
|
});
|
|
37
39
|
const server = new WebSocketServer({
|
|
38
40
|
host: 'localhost',
|