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,