generated from tailored/router-db-template
test
This commit is contained in:
@@ -44,6 +44,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"send": "^1.1.0",
|
||||
"ws": "^8.18.1"
|
||||
"ws": "npm:@kevisual/ws"
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
import path from 'node:path';
|
||||
import fs from 'node:fs';
|
||||
|
||||
type DownloadTask = {
|
||||
downloadPath: string;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import http from 'http';
|
||||
import https from 'https';
|
||||
import http from 'node:http';
|
||||
import https from 'node:https';
|
||||
import { rewriteCookieDomain } from '../https/cookie-rewrite.ts';
|
||||
import { ProxyInfo } from './proxy.ts';
|
||||
export const defaultApiProxy = [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import http from 'http';
|
||||
import http from 'node:http';
|
||||
import send from 'send';
|
||||
import fs from 'fs';
|
||||
import fs from 'node:fs';
|
||||
import path from 'path';
|
||||
import { ProxyInfo } from './proxy.ts';
|
||||
import { checkFileExists } from '@/file/index.ts';
|
||||
|
||||
@@ -2,4 +2,4 @@ export * from './proxy.ts';
|
||||
export * from './file-proxy.ts';
|
||||
export { default as send } from 'send';
|
||||
export * from './api-proxy.ts';
|
||||
export * from './wx-proxy.ts';
|
||||
export * from './ws-proxy.ts';
|
||||
@@ -8,6 +8,11 @@ export type ProxyInfo = {
|
||||
* 类型
|
||||
*/
|
||||
type?: 'static' | 'dynamic' | 'minio';
|
||||
/**
|
||||
* 是否使用websocket
|
||||
* @default false
|
||||
*/
|
||||
ws?: boolean;
|
||||
/**
|
||||
* 首要文件,比如index.html, 设置了首要文件,如果文件不存在,则访问首要文件
|
||||
*/
|
||||
@@ -23,6 +28,10 @@ export type ApiList = {
|
||||
* url或者相对路径
|
||||
*/
|
||||
target: string;
|
||||
/**
|
||||
* 目标地址
|
||||
*/
|
||||
ws?: boolean;
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
import { Server } from 'http';
|
||||
import WebSocket from 'ws';
|
||||
import { ProxyInfo } from './proxy.ts';
|
||||
/**
|
||||
* websocket代理
|
||||
* apiList: [{ path: '/api/router', target: 'https://kevisual.xiongxiao.me' }]
|
||||
* @param server
|
||||
* @param config
|
||||
*/
|
||||
export const wsProxy = (server: Server, config: { apiList: any[] }) => {
|
||||
export const wsProxy = (server: Server, config: { apiList: ProxyInfo[] }) => {
|
||||
console.log('Upgrade initialization started');
|
||||
|
||||
server.on('upgrade', (req, socket, head) => {
|
||||
const proxyApiList = config?.apiList || [];
|
||||
const proxyApiList: ProxyInfo[] = config?.apiList || [];
|
||||
const proxyApi = proxyApiList.find((item) => req.url.startsWith(item.path));
|
||||
|
||||
if (proxyApi) {
|
||||
if (proxyApi && proxyApi.ws) {
|
||||
const _u = new URL(req.url, `${proxyApi.target}`);
|
||||
const isHttps = _u.protocol === 'https:';
|
||||
const wsProtocol = isHttps ? 'wss' : 'ws';
|
||||
Reference in New Issue
Block a user