From 24f0dc5d83db8d69599f9b44bfb856147e092d85 Mon Sep 17 00:00:00 2001 From: limliu <261010267@qq.com> Date: Fri, 19 Apr 2024 11:03:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=8F=82=E6=95=B0=E5=85=81?= =?UTF-8?q?=E8=AE=B8=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=8D=95=E8=8E=B7=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E6=88=90=E5=8A=9F=E5=92=8C=E5=85=B3=E9=97=AD=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- folkmq-lang-js/folkmq/src/FolkMQ.ts | 4 ++-- .../folkmq/src/client/MqClientDefault.ts | 19 +++++++++++---- .../folkmq/src/client/MqClientListener.ts | 23 ++++++++++++++++--- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/folkmq-lang-js/folkmq/src/FolkMQ.ts b/folkmq-lang-js/folkmq/src/FolkMQ.ts index d2fb899..672e55c 100644 --- a/folkmq-lang-js/folkmq/src/FolkMQ.ts +++ b/folkmq-lang-js/folkmq/src/FolkMQ.ts @@ -34,8 +34,8 @@ export class FolkMQ { /** * 创建客户端 */ - static createClient(serverUrls: string[] | string): MqClient { - return new MqClientDefault(serverUrls); + static createClient(serverUrls: string[] | string, onOpen? : (() => void) | null, onClose? : (() => void) | null): MqClient { + return new MqClientDefault(serverUrls, onOpen, onClose); } /** diff --git a/folkmq-lang-js/folkmq/src/client/MqClientDefault.ts b/folkmq-lang-js/folkmq/src/client/MqClientDefault.ts index 6065952..987b272 100644 --- a/folkmq-lang-js/folkmq/src/client/MqClientDefault.ts +++ b/folkmq-lang-js/folkmq/src/client/MqClientDefault.ts @@ -35,7 +35,7 @@ export class MqClientDefault implements MqClientInternal { public _listenHandler: IoConsumer; //服务端地址 - private _urls: Array; + private readonly _urls: Array; //客户端会话 private _clientSession: ClusterClientSession; //客户端监听 @@ -50,14 +50,19 @@ export class MqClientDefault implements MqClientInternal { //自动回执 private _autoAcknowledge: boolean = true; - constructor(urls: string[] | string) { + private readonly _onClose: (() => void) | null | undefined; + + constructor(urls: string[] | string); + constructor(urls: string[] | string, onOpen: (() => void) | null | undefined, onClose: (() => void) | null | undefined); + + constructor(urls: string[] | string, onOpen?: (() => void) | null, onClose?: (() => void) | null) { if (urls instanceof Array) { this._urls = urls; } else { this._urls = [urls]; } - - this._clientListener = new MqClientListener(this); + this._onClose = onClose; + this._clientListener = new MqClientListener(this, onOpen, onClose); } name(): string { @@ -110,6 +115,9 @@ export class MqClientDefault implements MqClientInternal { disconnect() { this._clientSession.close(); + if(this._onClose){ + this._onClose(); + } } config(configHandler: IoConsumer): MqClient { @@ -421,6 +429,7 @@ export class MqClientDefault implements MqClientInternal { * 关闭 */ close() { - this._clientSession.close(); + //this._clientSession.close(); + this.disconnect(); } } \ No newline at end of file diff --git a/folkmq-lang-js/folkmq/src/client/MqClientListener.ts b/folkmq-lang-js/folkmq/src/client/MqClientListener.ts index 91e4737..b29c4ab 100644 --- a/folkmq-lang-js/folkmq/src/client/MqClientListener.ts +++ b/folkmq-lang-js/folkmq/src/client/MqClientListener.ts @@ -10,9 +10,17 @@ import {Message} from "@noear/socket.d/transport/core/Message"; export class MqClientListener extends EventListener { private _client: MqClientDefault; - constructor(client: MqClientDefault) { + private readonly _onOpen: (() => void) | null | undefined; + private readonly _onClose: (() => void) | null | undefined; + + constructor(client: MqClientDefault); + constructor(client: MqClientDefault, onOpen: (() => void) | null | undefined, onClose: (() => void) | null | undefined); + + constructor(client: MqClientDefault, onOpen?: (() => void) | null, onClose?: (() => void) | null) { super(); this._client = client; + this._onOpen = onOpen; + this._onClose = onClose; //接收派发指令 this.doOn(MqConstants.MQ_EVENT_DISTRIBUTE, (s, m) => { @@ -101,7 +109,14 @@ export class MqClientListener extends EventListener { */ override onOpen(session: Session) { super.onOpen(session); - + let this_ = this; + if(this_._onOpen){ + //延迟异步触发 + setTimeout(function(){ + // @ts-ignore + this_._onOpen(); + }, 300); + } console.info("Client session opened, sessionId=" + session.sessionId()); if (this._client.getSubscriptionSize() == 0) { @@ -134,7 +149,9 @@ export class MqClientListener extends EventListener { */ override onClose(session: Session) { super.onClose(session); - + if(this._onClose){ + this._onClose(); + } console.info("Client session closed, sessionId=" + session.sessionId()); } -- Gitee