From 35a3219b40377dcd27d086db5cc5fa792fc4ff80 Mon Sep 17 00:00:00 2001 From: "Xc@centOs" Date: Sat, 2 Dec 2023 15:39:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=8F=82=E6=95=B0=E6=94=B9?= =?UTF-8?q?=E6=88=90=E7=94=A8backend=E4=B8=AD=E7=9A=84getClusterInfo?= =?UTF-8?q?=E6=9D=A5=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E6=98=AF=E9=9B=86?= =?UTF-8?q?=E7=BE=A4=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/server/start.d.ts | 4 ++-- lib/server/start.js | 6 ++++-- src/server/start.ts | 12 +++++++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/server/start.d.ts b/lib/server/start.d.ts index 5e4ef85..0317cae 100644 --- a/lib/server/start.d.ts +++ b/lib/server/start.d.ts @@ -2,9 +2,9 @@ /// import './polyfill'; import { IncomingHttpHeaders } from "http"; -import { Connector, EntityDict } from 'oak-domain/lib/types'; +import { Connector, EntityDict, ClusterInfo } from 'oak-domain/lib/types'; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; import { AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore'; import { BackendRuntimeContext } from 'oak-frontend-base'; import { SyncContext } from 'oak-domain/lib/store/SyncRowStore'; -export declare function startup, FrontCxt extends SyncContext>(path: string, contextBuilder: (scene?: string) => (store: AsyncRowStore, header?: IncomingHttpHeaders) => Promise, connector: Connector, omitWatchers?: boolean, omitTimers?: boolean, routine?: (context: Cxt) => Promise): Promise; +export declare function startup, FrontCxt extends SyncContext>(path: string, contextBuilder: (scene?: string) => (store: AsyncRowStore, header?: IncomingHttpHeaders, clusterInfo?: ClusterInfo) => Promise, connector: Connector, omitWatchers?: boolean, omitTimers?: boolean, routine?: (context: Cxt) => Promise): Promise; diff --git a/lib/server/start.js b/lib/server/start.js index c1ff914..13b2d1c 100644 --- a/lib/server/start.js +++ b/lib/server/start.js @@ -27,7 +27,9 @@ async function startup(path, contextBuilder, connector, omitWatchers, omitTimers allowedHeaders: ["oak-cxt"], }; const io = new socket_io_1.Server(httpServer, socketOption); - if (process.env.pm_id || process.env.PM_ID) { + const clusterInfo = (0, oak_backend_base_1.getClusterInfo)(); + if (clusterInfo.usingCluster) { + // 目前只有pm2模式 // pm2环境下要接入clusterAdapter // https://socket.io/zh-CN/docs/v4/pm2/ io.adapter((0, cluster_adapter_1.createAdapter)()); @@ -95,7 +97,7 @@ async function startup(path, contextBuilder, connector, omitWatchers, omitTimers // 外部socket接口 router.get(connector.getSubscribePointRouter(), async (ctx) => { const { response } = ctx; - if (process.env.PM2_STATUS) { + if (clusterInfo.usingCluster) { // 如果使用了pm2,则返回 @socket.io/pm2所监听的PM2_PORT端口 response.body = { namespace: DATA_SUBSCRIBER_NAMESPACE, diff --git a/src/server/start.ts b/src/server/start.ts index f46635f..17a977d 100644 --- a/src/server/start.ts +++ b/src/server/start.ts @@ -5,8 +5,8 @@ import PathLib from 'path'; import Koa from 'koa'; import KoaRouter from 'koa-router'; import KoaBody from 'koa-body'; -import { AppLoader } from 'oak-backend-base'; -import { OakException, Connector, EntityDict } from 'oak-domain/lib/types'; +import { AppLoader, getClusterInfo } from 'oak-backend-base'; +import { OakException, Connector, EntityDict, ClusterInfo } from 'oak-domain/lib/types'; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; import { AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore'; import { BackendRuntimeContext } from 'oak-frontend-base'; @@ -18,7 +18,7 @@ import { setupWorker } from "@socket.io/sticky"; const DATA_SUBSCRIBER_NAMESPACE = '/ds'; export async function startup, FrontCxt extends SyncContext>( path: string, - contextBuilder: (scene?: string) => (store: AsyncRowStore, header?: IncomingHttpHeaders) => Promise, + contextBuilder: (scene?: string) => (store: AsyncRowStore, header?: IncomingHttpHeaders, clusterInfo?: ClusterInfo) => Promise, connector: Connector, omitWatchers?: boolean, omitTimers?: boolean, @@ -35,7 +35,9 @@ export async function startup { const { response } = ctx; - if (process.env.PM2_STATUS) { + if (clusterInfo.usingCluster) { // 如果使用了pm2,则返回 @socket.io/pm2所监听的PM2_PORT端口 response.body = { namespace: DATA_SUBSCRIBER_NAMESPACE,