moonbridge-ts 0.6.1 → 0.6.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "moonbridge-ts",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "description": "MoonBridge IPC by WebSocket for node(server) and browser(client).",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -21,7 +21,6 @@ export class Logger {
21
21
  private static _subscribers: LogSubscriber[] = [];
22
22
 
23
23
  readonly tag: string;
24
- private _subscriber?: LogSubscriber;
25
24
 
26
25
  private constructor(tag: string) {
27
26
  this.tag = tag;
@@ -51,18 +50,13 @@ export class Logger {
51
50
  Logger._loggers.forEach((logger, tag) => action(tag, logger));
52
51
  }
53
52
 
54
- set subscriber(cb: LogSubscriber) {
55
- this._subscriber = cb;
56
- }
57
-
58
53
  private notify(level: LogLevel, message: string, opts?: { file?: string; func?: string }): void {
59
54
  const subs = [...Logger._subscribers];
60
- if (this._subscriber) subs.push(this._subscriber);
61
55
  for (const cb of subs) {
62
56
  try {
63
57
  cb(this.tag, level, message, opts);
64
58
  } catch {
65
- // 静默处理,不影响 SDK
59
+ // Do nothing...
66
60
  }
67
61
  }
68
62
  }
@@ -13,6 +13,7 @@ import { EventBus } from './types/ipc_event_bus';
13
13
  import { Messenger } from './types/ipc_messenger';
14
14
  import { RpcServiceFactory } from './rpc/rpc_service_factory';
15
15
  import { RealMoonBridgeIpcClient } from './internal/moonbridge_ipc_client.internal';
16
+ import { Logger, LogSubscriber } from '../../moonbridge/logger/logger';
16
17
 
17
18
  /**
18
19
  * MoonBridge IPC 客户端抽象接口
@@ -70,6 +71,7 @@ export class MoonBridgeIpcClientBuilder {
70
71
  private _messageInterceptor?: MessageInterceptor;
71
72
  private _connectionObserver?: ConnectionObserver;
72
73
  private _appLauncher?: AppLauncher;
74
+ private _logSubscriber?: LogSubscriber;
73
75
 
74
76
  // PUBLIC METHODS
75
77
 
@@ -154,6 +156,14 @@ export class MoonBridgeIpcClientBuilder {
154
156
  return this;
155
157
  }
156
158
 
159
+ /**
160
+ * 添加日志订阅者
161
+ */
162
+ logSubscriber(subscriber: LogSubscriber): this {
163
+ this._logSubscriber = subscriber;
164
+ return this;
165
+ }
166
+
157
167
  /**
158
168
  * 构建客户端实例并可选注册为默认客户端。
159
169
  */
@@ -167,6 +177,12 @@ export class MoonBridgeIpcClientBuilder {
167
177
  );
168
178
  }
169
179
 
180
+ // 添加日志订阅者
181
+ if (this._logSubscriber) {
182
+ Logger.addSubscriber(this._logSubscriber);
183
+ }
184
+
185
+ // 创建客户端设置
170
186
  const settings = new IpcClientSettings({
171
187
  clientName: this._clientName,
172
188
  webSocketServerEndpoint: this._webSocketServerEndpoint,
@@ -140,6 +140,8 @@ export class RealMoonBridgeIpcServer implements MoonBridgeIpcServer {
140
140
  return this._webSocketServer?.serverAddressInfo?.port ?? undefined;
141
141
  }
142
142
 
143
+ // PRIVATE METHODS
144
+
143
145
  private _addClient(clientIdentity: ClientIdentity, client: SerialMessageChannel): void {
144
146
  const clientName = clientIdentity.clientName;
145
147
  const clientAddress = this._getClientAddress(client);
@@ -6,6 +6,7 @@ import { SocketServer } from '../general/transport/websocket/websocket_server';
6
6
  import type { WebSocketServerEndpoint } from '../general/config/websocket_server_endpoint';
7
7
  import type { ClientIdentity, ClientIdentityProvider } from './credential/client_identity';
8
8
  import { RealMoonBridgeIpcServer } from './internal/moonbridge_ipc_server.internal';
9
+ import { Logger, LogSubscriber } from '../../moonbridge/logger/logger';
9
10
 
10
11
  /** 消息回复函数,用于向客户端发送响应消息 */
11
12
  export type IpcMessageReply = (message: string) => Promise<boolean>;
@@ -78,6 +79,7 @@ export class MoonBridgeIpcServerBuilder {
78
79
  private _onClientDisconnected?: DisconnectedCallback;
79
80
  private _messagePreprocessor?: MessagePreprocessor;
80
81
  private _onMessageReceived?: OnMessageReceived;
82
+ private _logSubscriber?: LogSubscriber;
81
83
 
82
84
  /** 设置服务器名称 */
83
85
  serverName(name: string): this {
@@ -121,6 +123,12 @@ export class MoonBridgeIpcServerBuilder {
121
123
  return this;
122
124
  }
123
125
 
126
+ /** 设置日志订阅者 */
127
+ logSubscriber(subscriber: LogSubscriber): this {
128
+ this._logSubscriber = subscriber;
129
+ return this;
130
+ }
131
+
124
132
  /**
125
133
  * 构建并返回配置完成的服务器实例
126
134
  * @param makeDefault 是否将该服务器实例设置为默认服务器,默认为 false
@@ -130,6 +138,12 @@ export class MoonBridgeIpcServerBuilder {
130
138
  throw new Error('请使用 useWebSocketChannel 设置传输配置。',);
131
139
  }
132
140
 
141
+ // 添加日志订阅者
142
+ if (this._logSubscriber) {
143
+ Logger.addSubscriber(this._logSubscriber);
144
+ }
145
+
146
+ // 创建服务器实例
133
147
  const server = new RealMoonBridgeIpcServer(
134
148
  this._serverName,
135
149
  this._webSocketServerEndpoint,
@@ -141,7 +155,6 @@ export class MoonBridgeIpcServerBuilder {
141
155
  );
142
156
 
143
157
  MoonBridgeIpcServerRegistry.instance.register(server);
144
-
145
158
  if (makeDefault) {
146
159
  MoonBridgeIpcServerRegistry.instance.setDefault(server);
147
160
  }