@@ -5,7 +5,7 @@ import cors from 'koa-cors';
5
5
import staticMidware from 'koa-static' ;
6
6
import path from 'path' ;
7
7
import { Server } from 'http' ;
8
- import net from 'net ' ;
8
+ import { getPortPromise } from 'portfinder ' ;
9
9
import {
10
10
BriskControllerRequestHandler ,
11
11
BriskControllerOption ,
@@ -223,7 +223,7 @@ function getParameters(ctx: Context, params?: BriskControllerParameter[]) {
223
223
value = ( ctx . request as any ) . pathParams ?. [ item . name ] ;
224
224
break ;
225
225
case BRISK_CONTROLLER_PARAMETER_IS_E . HEADER :
226
- value = ctx . request . headers [ item . name ] ;
226
+ value = ctx . request . headers [ item . name . toLowerCase ( ) ] ;
227
227
break ;
228
228
case BRISK_CONTROLLER_PARAMETER_IS_E . COOKIE :
229
229
value = ctx . cookies . get ( item . name ) ;
@@ -327,32 +327,6 @@ export function addRequest(requestPath: string, handler: BriskControllerRequestH
327
327
) ;
328
328
}
329
329
330
-
331
- export function getPort ( port : number ) : Promise < number > {
332
- let testServer = net . createServer ( ) . listen ( port ) ;
333
- return new Promise ( ( resolve , reject ) => {
334
- testServer . on ( 'listening' , ( ) => {
335
- testServer . close ( ( err ) => {
336
- if ( err ) {
337
- logger . error ( 'getPort close error! retry ...' , err ) ;
338
- resolve ( getPort ( port ) ) ;
339
- return ;
340
- }
341
- resolve ( port ) ;
342
- } ) ;
343
- } ) ;
344
- testServer . on ( 'error' , ( err : any ) => {
345
- if ( err . code === 'EADDRINUSE' ) {
346
- logger . warn ( `this port ${ port } is occupied try another.` ) ;
347
- resolve ( getPort ( port + 1 ) ) ;
348
- } else {
349
- logger . error ( 'getPort error!' , err ) ;
350
- reject ( err ) ;
351
- }
352
- } ) ;
353
- } ) ;
354
- }
355
-
356
330
/**
357
331
* 开始运行
358
332
* @param port 端口,默认3000
@@ -379,8 +353,12 @@ export async function start(port: number = 3000, option?: BriskControllerOption)
379
353
app . use ( staticMidware ( path . resolve ( option . staticPath ) ) ) ;
380
354
}
381
355
356
+ const realPort = await getPortPromise ( {
357
+ port,
358
+ } ) ;
359
+
382
360
if ( option ?. swagger ) {
383
- addRequest ( '/swagger.json' , getSwaggerHandler ( port , globalBaseUrl ) , {
361
+ addRequest ( '/swagger.json' , getSwaggerHandler ( realPort , globalBaseUrl ) , {
384
362
title : 'swagger文件(仅开启swagger后有效)' ,
385
363
description : '获取swagger.json' ,
386
364
tag : {
@@ -401,11 +379,11 @@ export async function start(port: number = 3000, option?: BriskControllerOption)
401
379
402
380
app . use ( router ) ;
403
381
404
- const realPort = await getPort ( port ) ;
405
-
406
382
await new Promise ( ( resolve ) => {
407
383
server = app . listen ( realPort , '0.0.0.0' , ( ) => {
408
- logger . info ( `listen http://localhost:${ port } ` ) ;
384
+ logger . info ( `listen http://0.0.0.0:${ realPort } ` ) ;
385
+ logger . info ( `listen http://127.0.0.1:${ realPort } ` ) ;
386
+ logger . info ( `listen http://localhost:${ realPort } ` ) ;
409
387
resolve ( null ) ;
410
388
} ) ;
411
389
} ) ;
0 commit comments