diff --git a/backend/mpc-system/services/service-party-app/electron/modules/grpc-client.ts b/backend/mpc-system/services/service-party-app/electron/modules/grpc-client.ts index cbf80b79..3c622f54 100644 --- a/backend/mpc-system/services/service-party-app/electron/modules/grpc-client.ts +++ b/backend/mpc-system/services/service-party-app/electron/modules/grpc-client.ts @@ -550,6 +550,10 @@ export class GrpcClient extends EventEmitter { throw new Error('Not connected'); } + if (!this.connected) { + throw new Error('gRPC client not connected'); + } + // 保存订阅状态(用于重连后恢复) this.activeMessageSubscription = { sessionId, partyId }; @@ -560,15 +564,22 @@ export class GrpcClient extends EventEmitter { try { oldStream.cancel(); } catch (e) { - // 忽略 + console.log('[gRPC] Ignored error while canceling old message stream:', (e as Error).message); } + this.messageStream = null; } - this.messageStream = (this.client as grpc.Client & { subscribeMessages: (req: unknown) => grpc.ClientReadableStream }) - .subscribeMessages({ - session_id: sessionId, - party_id: partyId, - }); + try { + this.messageStream = (this.client as grpc.Client & { subscribeMessages: (req: unknown) => grpc.ClientReadableStream }) + .subscribeMessages({ + session_id: sessionId, + party_id: partyId, + }); + } catch (e) { + console.error('[gRPC] Failed to create message stream:', (e as Error).message); + this.activeMessageSubscription = null; + throw e; + } // 保存当前流的引用,用于在事件处理器中检查是否是当前活跃的流 const currentStream = this.messageStream;