feat: 局域网服务器

This commit is contained in:
unanmed 2024-03-18 18:08:08 +08:00
parent 3e0311897f
commit 8de7e046ab
5 changed files with 73 additions and 2 deletions

View File

@ -42,6 +42,7 @@
"@types/babel__core": "^7.20.1",
"@types/fontmin": "^0.9.0",
"@types/fs-extra": "^9.0.13",
"@types/http-proxy": "^1.17.14",
"@types/lodash-es": "^4.17.9",
"@types/node": "^18.17.14",
"@types/ws": "^8.5.5",
@ -53,6 +54,7 @@
"fontmin": "^0.9.9",
"form-data": "^4.0.0",
"fs-extra": "^10.1.0",
"http-proxy": "^1.18.1",
"less": "^4.2.0",
"postcss-preset-env": "^9.4.0",
"rollup": "^3.29.4",

View File

@ -76,6 +76,9 @@ devDependencies:
'@types/fs-extra':
specifier: ^9.0.13
version: 9.0.13
'@types/http-proxy':
specifier: ^1.17.14
version: 1.17.14
'@types/lodash-es':
specifier: ^4.17.9
version: 4.17.9
@ -109,6 +112,9 @@ devDependencies:
fs-extra:
specifier: ^10.1.0
version: 10.1.0
http-proxy:
specifier: ^1.18.1
version: 1.18.1
less:
specifier: ^4.2.0
version: 4.2.0
@ -2943,6 +2949,12 @@ packages:
'@types/node': 18.17.14
dev: true
/@types/http-proxy@1.17.14:
resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==}
dependencies:
'@types/node': 18.17.14
dev: true
/@types/linkify-it@3.0.5:
resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==}
dev: true
@ -4337,6 +4349,10 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/eventemitter3@4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
dev: true
/exponential-backoff@3.1.1:
resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==}
dev: true
@ -4733,6 +4749,17 @@ packages:
- supports-color
dev: true
/http-proxy@1.18.1:
resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==}
engines: {node: '>=8.0.0'}
dependencies:
eventemitter3: 4.0.7
follow-redirects: 1.15.2
requires-port: 1.0.0
transitivePeerDependencies:
- debug
dev: true
/https-proxy-agent@5.0.1:
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
engines: {node: '>= 6'}
@ -6222,6 +6249,10 @@ packages:
engines: {node: '>= 10'}
dev: true
/requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
dev: true
/resize-observer-polyfill@1.5.1:
resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
dev: false

37
script/wlan.ts Normal file
View File

@ -0,0 +1,37 @@
import { networkInterfaces } from 'os';
import proxy from 'http-proxy';
import { createServer } from 'http';
const port = process.argv[2];
const network = networkInterfaces();
let ip: string;
for (const interfaceName in network) {
const interfaces = network[interfaceName];
if (!interfaces) continue;
if (interfaceName !== 'WLAN') continue;
for (const iface of interfaces) {
// 检查是否为IPv4地址且非内部地址
if (iface.family === 'IPv4' && !iface.internal) {
console.log(`局域网IP地址: ${iface.address}`);
ip = iface.address;
}
}
}
if (ip!) {
const server = proxy.createProxyServer();
const httpServer = createServer((req, res) => {
server.web(req, res, { target: `http://localhost:${port}` }, err => {
console.log(err);
});
});
httpServer.listen(Number(port) + 1000, ip, () => {
console.log(`Wlan server on: http://${ip}:${Number(port) + 1000}`);
console.log(
`Editor on: http://${ip}:${Number(port) + 1000}/editor.html`
);
});
}

View File

@ -425,7 +425,7 @@ mainSetting
.register('itemDetail', '宝石血瓶显伤', true, COM.Boolean)
.register('transition', '界面动画', false, COM.Boolean)
.register('antiAlias', '抗锯齿', false, COM.Boolean)
.register('fontSize', '字体大小', isMobile ? 12 : 16, COM.Number, [2, 48, 1])
.register('fontSize', '字体大小', isMobile ? 10 : 16, COM.Number, [2, 48, 1])
.register('fontSizeStatus', '状态栏字体', 100, COM.Number, [20, 300, 10])
.register('smoothView', '平滑镜头', true, COM.Boolean)
.register('criticalGem', '临界显示方式', false, COM.Boolean)
@ -485,7 +485,7 @@ loading.once('coreInit', () => {
'screen.itemDetail': !!storage.getValue('screen.itemDetail', true),
'screen.transition': !!storage.getValue('screen.transition', false),
'screen.antiAlias': !!storage.getValue('screen.antiAlias', false),
'screen.fontSize': storage.getValue('screen.fontSize', isMobile ? 12 : 16),
'screen.fontSize': storage.getValue('screen.fontSize', isMobile ? 10 : 16),
'screen.fontSizeStatus': storage.getValue('screen.fontSizeStatus', 100),
'screen.smoothView': !!storage.getValue('screen.smoothView', true),
'screen.criticalGem': !!storage.getValue('screen.criticalGem', false),

View File

@ -4,6 +4,7 @@ import { loading } from '../game';
export interface CurrentEnemy {
enemy: DamageEnemy;
// 这个是干啥的?
onMapEnemy: DamageEnemy[];
}