From 7f9347f54ceb80f6609e4bb811dae263f43d337c Mon Sep 17 00:00:00 2001 From: Xc Date: Fri, 8 Nov 2024 14:47:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86socket=E7=9B=B8=E5=85=B3=E7=9A=84?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=E5=B8=B8=E9=87=8F=E8=B7=AF=E5=BE=84=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/types/Configuration.d.ts | 2 +- lib/types/Connector.d.ts | 9 +++++---- lib/utils/SimpleConnector.d.ts | 14 ++++++++------ lib/utils/SimpleConnector.js | 25 +++++++++++++++---------- src/types/Configuration.ts | 4 +--- src/types/Connector.ts | 9 +++++---- src/utils/SimpleConnector.ts | 26 ++++++++++++++++---------- 7 files changed, 51 insertions(+), 38 deletions(-) diff --git a/lib/types/Configuration.d.ts b/lib/types/Configuration.d.ts index 3fc6719..ec51f07 100644 --- a/lib/types/Configuration.d.ts +++ b/lib/types/Configuration.d.ts @@ -42,10 +42,10 @@ export type AccessConfiguration = { routerPrefixes?: { aspect?: string; endpoint?: string; - subscribe?: string; getSubscribePoint?: string; bridge?: string; }; + socketPath?: string; http: { hostname: string; port?: number; diff --git a/lib/types/Connector.d.ts b/lib/types/Connector.d.ts index f01f4a7..be961da 100644 --- a/lib/types/Connector.d.ts +++ b/lib/types/Connector.d.ts @@ -26,10 +26,11 @@ export interface Connector; }; - getSubscribeRouter: () => string; - getSubscribePointRouter: () => string; - getSubscribePoint: () => Promise<{ - url: string; + getSocketPath: () => string; + getSocketPointRouter: () => string; + getSocketPoint: () => Promise<{ + socketUrl: string; + subscribeUrl: string; path: string; }>; getBridgeRouter: () => string; diff --git a/lib/utils/SimpleConnector.d.ts b/lib/utils/SimpleConnector.d.ts index 8b032e5..360255e 100644 --- a/lib/utils/SimpleConnector.d.ts +++ b/lib/utils/SimpleConnector.d.ts @@ -7,8 +7,9 @@ import { AccessConfiguration } from '../types/Configuration'; export default class SimpleConnector> implements Connector { static ASPECT_ROUTER: string; static BRIDGE_ROUTER: string; - static SUBSCRIBE_ROUTER: string; - static SUBSCRIBE_POINT_ROUTER: string; + static SUBSCRIBE_PATH: string; + static SOCKET_PATH: string; + static SOCKET_POINT_ROUTER: string; static ENDPOINT_ROUTER: string; private serverUrl; private serverAspectUrl; @@ -47,11 +48,12 @@ export default class SimpleConnector; getRouter(): string; - getSubscribeRouter(): string; - getSubscribePointRouter(): string; - getSubscribePoint(): Promise<{ - url: any; + getSocketPath(): string; + getSocketPointRouter(): string; + getSocketPoint(): Promise<{ path: any; + subscribeUrl: any; + socketUrl: any; }>; getEndpointRouter(): string; parseRequest(headers: IncomingHttpHeaders, body?: any, files?: any): { diff --git a/lib/utils/SimpleConnector.js b/lib/utils/SimpleConnector.js index cedf0e1..3b6a269 100644 --- a/lib/utils/SimpleConnector.js +++ b/lib/utils/SimpleConnector.js @@ -8,8 +8,9 @@ const types_1 = require("../types"); class SimpleConnector { static ASPECT_ROUTER = '/aspect'; static BRIDGE_ROUTER = '/bridge'; - static SUBSCRIBE_ROUTER = process.env.OAK_SUBSCRIBE_ROUTER || '/subscribe'; - static SUBSCRIBE_POINT_ROUTER = '/subscribePoint'; + static SUBSCRIBE_PATH = process.env.OAK_SUBSCRIBE_PATH || '/subscribe'; + static SOCKET_PATH = process.env.OAK_SOCKET_PATH || '/socket'; + static SOCKET_POINT_ROUTER = '/socketPoint'; static ENDPOINT_ROUTER = '/endpoint'; serverUrl; serverAspectUrl; @@ -38,7 +39,7 @@ class SimpleConnector { this.serverAspectUrl = `${serverUrl}${routerPrefixes?.aspect || SimpleConnector.ASPECT_ROUTER}`; this.serverBridgeUrl = `${serverUrl}${routerPrefixes?.bridge || SimpleConnector.BRIDGE_ROUTER}`; this.serverSubscribePointUrl = `${serverUrl}${routerPrefixes?.getSubscribePoint || - SimpleConnector.SUBSCRIBE_POINT_ROUTER}`; + SimpleConnector.SOCKET_POINT_ROUTER}`; this.makeException = makeException; } getCorsHeader() { @@ -122,13 +123,16 @@ class SimpleConnector { getRouter() { return this.configuration.routerPrefixes?.aspect || SimpleConnector.ASPECT_ROUTER; } - getSubscribeRouter() { - return this.configuration.routerPrefixes?.subscribe || SimpleConnector.SUBSCRIBE_ROUTER; + /* getSubscribePath(): string { + return this.configuration.socketPath?.subscribe || SimpleConnector.SUBSCRIBE_PATH; + } */ + getSocketPath() { + return this.configuration.socketPath || SimpleConnector.SOCKET_PATH; } - getSubscribePointRouter() { - return this.configuration.routerPrefixes?.getSubscribePoint || SimpleConnector.SUBSCRIBE_POINT_ROUTER; + getSocketPointRouter() { + return this.configuration.routerPrefixes?.getSubscribePoint || SimpleConnector.SOCKET_POINT_ROUTER; } - async getSubscribePoint() { + async getSocketPoint() { let response; try { response = await global.fetch(this.serverSubscribePointUrl); @@ -144,10 +148,11 @@ class SimpleConnector { const responseType = response.headers.get('Content-Type') || response.headers.get('content-type'); if (responseType?.toLocaleLowerCase().match(/application\/json/i)) { - const { url, path } = await response.json(); + const { socketUrl, subscribeUrl, path } = await response.json(); return { - url, path, + subscribeUrl, + socketUrl, }; } else { diff --git a/src/types/Configuration.ts b/src/types/Configuration.ts index b3fecd5..b8af5a2 100644 --- a/src/types/Configuration.ts +++ b/src/types/Configuration.ts @@ -50,15 +50,13 @@ export type AccessConfiguration = { // 默认endpoint endpoint?: string; - // 默认subscribe - subscribe?: string; - // 默认getSubscribePoint getSubscribePoint?: string; // 默认bridge bridge?: string; }, + socketPath?: string, http: { // 后台所在域名 hostname: string; diff --git a/src/types/Connector.ts b/src/types/Connector.ts index ad3ecb6..f12a3ee 100644 --- a/src/types/Connector.ts +++ b/src/types/Connector.ts @@ -45,12 +45,13 @@ export interface Connector; }; - getSubscribeRouter: () => string; + getSocketPath: () => string; - getSubscribePointRouter: () => string; + getSocketPointRouter: () => string; - getSubscribePoint: () => Promise<{ - url: string; + getSocketPoint: () => Promise<{ + socketUrl: string; + subscribeUrl: string; path: string; }>; diff --git a/src/utils/SimpleConnector.ts b/src/utils/SimpleConnector.ts index b844c5a..ed71223 100644 --- a/src/utils/SimpleConnector.ts +++ b/src/utils/SimpleConnector.ts @@ -12,8 +12,9 @@ export default class SimpleConnector Date: Fri, 8 Nov 2024 15:04:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?WBWatcher=E7=9A=84=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86forUpdate=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/types/Watcher.d.ts | 1 + src/types/Watcher.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/types/Watcher.d.ts b/lib/types/Watcher.d.ts index c49a68f..bb75e4a 100644 --- a/lib/types/Watcher.d.ts +++ b/lib/types/Watcher.d.ts @@ -17,6 +17,7 @@ export interface WBWatcher Promise); projection: ED[T]['Selection']['data'] | (() => Promise); fn: (context: Cxt, data: Partial[]) => Promise>; + forUpdate?: true; singleton?: true; } export type Watcher> = BBWatcher | WBWatcher; diff --git a/src/types/Watcher.ts b/src/types/Watcher.ts index 1ea5b0b..246ba14 100644 --- a/src/types/Watcher.ts +++ b/src/types/Watcher.ts @@ -21,6 +21,7 @@ export interface WBWatcher Promise); projection: ED[T]['Selection']['data'] | (() => Promise); fn: (context: Cxt, data: Partial[]) => Promise>; + forUpdate?: true; singleton?: true; // 置singleton意味着在集群环境中只有一个进程会去执行 };