mirror of
https://github.com/nocobase/nocobase
synced 2024-11-15 05:57:53 +00:00
feat: supports the WS_PATH environment variable (#3384)
This commit is contained in:
parent
c44f459756
commit
1adaa53c2b
@ -106,7 +106,9 @@ module.exports = (cli) => {
|
|||||||
env: {
|
env: {
|
||||||
PORT: clientPort,
|
PORT: clientPort,
|
||||||
APP_ROOT: `${APP_PACKAGE_ROOT}/client`,
|
APP_ROOT: `${APP_PACKAGE_ROOT}/client`,
|
||||||
WEBSOCKET_URL: process.env.WEBSOCKET_URL || (serverPort ? `ws://localhost:${serverPort}/ws` : undefined),
|
WEBSOCKET_URL:
|
||||||
|
process.env.WEBSOCKET_URL ||
|
||||||
|
(serverPort ? `ws://localhost:${serverPort}${process.env.WS_PATH}` : undefined),
|
||||||
PROXY_TARGET_URL:
|
PROXY_TARGET_URL:
|
||||||
process.env.PROXY_TARGET_URL || (serverPort ? `http://127.0.0.1:${serverPort}` : undefined),
|
process.env.PROXY_TARGET_URL || (serverPort ? `http://127.0.0.1:${serverPort}` : undefined),
|
||||||
},
|
},
|
||||||
|
@ -271,6 +271,7 @@ exports.initEnv = function initEnv() {
|
|||||||
LOCAL_STORAGE_DEST: 'storage/uploads',
|
LOCAL_STORAGE_DEST: 'storage/uploads',
|
||||||
PLUGIN_STORAGE_PATH: resolve(process.cwd(), 'storage/plugins'),
|
PLUGIN_STORAGE_PATH: resolve(process.cwd(), 'storage/plugins'),
|
||||||
MFSU_AD: 'none',
|
MFSU_AD: 'none',
|
||||||
|
WS_PATH: '/ws',
|
||||||
NODE_MODULES_PATH: resolve(process.cwd(), 'node_modules'),
|
NODE_MODULES_PATH: resolve(process.cwd(), 'node_modules'),
|
||||||
PM2_HOME: resolve(process.cwd(), './storage/.pm2'),
|
PM2_HOME: resolve(process.cwd(), './storage/.pm2'),
|
||||||
PLUGIN_PACKAGE_PREFIX: '@nocobase/plugin-,@nocobase/plugin-sample-,@nocobase/preset-',
|
PLUGIN_PACKAGE_PREFIX: '@nocobase/plugin-,@nocobase/plugin-sample-,@nocobase/preset-',
|
||||||
|
@ -7,18 +7,20 @@ export const getWebSocketURL = () => {
|
|||||||
}
|
}
|
||||||
const subApp = getSubAppName();
|
const subApp = getSubAppName();
|
||||||
const queryString = subApp ? `?__appName=${subApp}` : '';
|
const queryString = subApp ? `?__appName=${subApp}` : '';
|
||||||
|
const wsPath = process.env.WS_PATH || '/ws';
|
||||||
if (process.env.WEBSOCKET_URL) {
|
if (process.env.WEBSOCKET_URL) {
|
||||||
const url = new URL(process.env.WEBSOCKET_URL);
|
const url = new URL(process.env.WEBSOCKET_URL);
|
||||||
if (url.hostname === 'localhost') {
|
if (url.hostname === 'localhost') {
|
||||||
return `${location.protocol === 'https:' ? 'wss' : 'ws'}://${location.hostname}:${url.port}/ws${queryString}`;
|
const protocol = location.protocol === 'https:' ? 'wss' : 'ws';
|
||||||
|
return `${protocol}://${location.hostname}:${url.port}${wsPath}${queryString}`;
|
||||||
}
|
}
|
||||||
return `${process.env.WEBSOCKET_URL}${queryString}`;
|
return `${process.env.WEBSOCKET_URL}${queryString}`;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const url = new URL(process.env.API_BASE_URL);
|
const url = new URL(process.env.API_BASE_URL);
|
||||||
return `${url.protocol === 'https:' ? 'wss' : 'ws'}://${url.host}/ws${queryString}`;
|
return `${url.protocol === 'https:' ? 'wss' : 'ws'}://${url.host}${wsPath}${queryString}`;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return `${location.protocol === 'https:' ? 'wss' : 'ws'}://${location.host}/ws${queryString}`;
|
return `${location.protocol === 'https:' ? 'wss' : 'ws'}://${location.host}${wsPath}${queryString}`;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@ function getUmiConfig() {
|
|||||||
return memo;
|
return memo;
|
||||||
}, {}),
|
}, {}),
|
||||||
define: {
|
define: {
|
||||||
|
'process.env.WS_PATH': process.env.WS_PATH,
|
||||||
'process.env.API_BASE_URL': API_BASE_URL || API_BASE_PATH,
|
'process.env.API_BASE_URL': API_BASE_URL || API_BASE_PATH,
|
||||||
'process.env.APP_ENV': process.env.APP_ENV,
|
'process.env.APP_ENV': process.env.APP_ENV,
|
||||||
'process.env.VERSION': packageJson.version,
|
'process.env.VERSION': packageJson.version,
|
||||||
|
@ -154,7 +154,7 @@ describe('gateway', () => {
|
|||||||
let port;
|
let port;
|
||||||
let messages: Array<string>;
|
let messages: Array<string>;
|
||||||
const connectClient = (port) => {
|
const connectClient = (port) => {
|
||||||
wsClient = new ws(`ws://localhost:${port}/ws`);
|
wsClient = new ws(`ws://localhost:${port}${process.env.WS_PATH}`);
|
||||||
wsClient.on('message', (data) => {
|
wsClient.on('message', (data) => {
|
||||||
const message = data.toString();
|
const message = data.toString();
|
||||||
messages.push(message);
|
messages.push(message);
|
||||||
|
@ -15,7 +15,7 @@ import handler from 'serve-handler';
|
|||||||
import { parse } from 'url';
|
import { parse } from 'url';
|
||||||
import { AppSupervisor } from '../app-supervisor';
|
import { AppSupervisor } from '../app-supervisor';
|
||||||
import { ApplicationOptions } from '../application';
|
import { ApplicationOptions } from '../application';
|
||||||
import { getPackageDirByExposeUrl, getPackageNameByExposeUrl, PLUGIN_STATICS_PATH } from '../plugin-manager';
|
import { PLUGIN_STATICS_PATH, getPackageDirByExposeUrl, getPackageNameByExposeUrl } from '../plugin-manager';
|
||||||
import { applyErrorWithArgs, getErrorWithCode } from './errors';
|
import { applyErrorWithArgs, getErrorWithCode } from './errors';
|
||||||
import { IPCSocketClient } from './ipc-socket-client';
|
import { IPCSocketClient } from './ipc-socket-client';
|
||||||
import { IPCSocketServer } from './ipc-socket-server';
|
import { IPCSocketServer } from './ipc-socket-server';
|
||||||
@ -331,7 +331,7 @@ export class Gateway extends EventEmitter {
|
|||||||
from: 'node',
|
from: 'node',
|
||||||
})
|
})
|
||||||
.then(async () => {
|
.then(async () => {
|
||||||
if (!await mainApp.isStarted()) {
|
if (!(await mainApp.isStarted())) {
|
||||||
await mainApp.stop();
|
await mainApp.stop();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -396,7 +396,7 @@ export class Gateway extends EventEmitter {
|
|||||||
this.server.on('upgrade', (request, socket, head) => {
|
this.server.on('upgrade', (request, socket, head) => {
|
||||||
const { pathname } = parse(request.url);
|
const { pathname } = parse(request.url);
|
||||||
|
|
||||||
if (pathname === '/ws') {
|
if (pathname === process.env.WS_PATH) {
|
||||||
this.wsServer.wss.handleUpgrade(request, socket, head, (ws) => {
|
this.wsServer.wss.handleUpgrade(request, socket, head, (ws) => {
|
||||||
this.wsServer.wss.emit('connection', ws, request);
|
this.wsServer.wss.emit('connection', ws, request);
|
||||||
});
|
});
|
||||||
|
@ -32,9 +32,9 @@ export const startServerWithRandomPort = async (startServer) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const createWsClient = async ({ serverPort, options = {} }) => {
|
export const createWsClient = async ({ serverPort, options = {} }) => {
|
||||||
console.log(`connect to ws://localhost:${serverPort}/ws`, options);
|
console.log(`connect to ws://localhost:${serverPort}${process.env.WS_PATH}`, options);
|
||||||
|
|
||||||
const wsc = new ws(`ws://localhost:${serverPort}/ws`, options);
|
const wsc = new ws(`ws://localhost:${serverPort}${process.env.WS_PATH}`, options);
|
||||||
const messages = [];
|
const messages = [];
|
||||||
|
|
||||||
wsc.on('message', (data) => {
|
wsc.on('message', (data) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user