@@ -289,12 +289,12 @@ protected Object getRouteMetadata(Route route, String key) {
289
289
* @param value 数据值
290
290
*/
291
291
protected void setContextData (RoutingContext ctx , String key , Object value ) {
292
- ctx .put (key , value == null ? "" : value );
292
+ ctx .put (key , value == null ? "null " : value );
293
293
}
294
294
295
295
protected Object getContextData (RoutingContext ctx , String key ) {
296
296
Object metadata = ctx .get (key );
297
- return metadata == null ? "" : metadata ;
297
+ return metadata == null ? "null " : metadata ;
298
298
}
299
299
300
300
protected HttpServerResponse setStatusCode (RoutingContext ctx , HttpServerResponse resp , int code ) {
@@ -630,14 +630,14 @@ protected Handler<AsyncResult<HttpClientRequest>> connectHandler(RoutingContext
630
630
setContextData (ctx , INTERNAL_CLIENT_CONNECTION_OPEN , true );
631
631
632
632
// 注册客户端与代理服务之间连接的断开监听事件。可监听主动关闭和被动关闭
633
- setContextData ( ctx , INTERNAL_CLIENT_LOCAL_ADDR , clientReq .connection (). localAddress (). toString () );
634
- setContextData (ctx , INTERNAL_CLIENT_REMOTE_ADDR , clientReq . connection (). remoteAddress ().toString ());
635
- log . debug ( "{} --> {} connected" , getContextData ( ctx , INTERNAL_CLIENT_LOCAL_ADDR ), getContextData ( ctx , INTERNAL_CLIENT_REMOTE_ADDR ));
636
-
633
+ HttpConnection connection = clientReq .connection ();
634
+ setContextData (ctx , INTERNAL_CLIENT_LOCAL_ADDR , connection . localAddress ().toString ());
635
+ setContextData ( ctx , INTERNAL_CLIENT_REMOTE_ADDR , connection . remoteAddress (). toString ( ));
636
+ log . debug ( "target {} -- {} connected" , getContextData ( ctx , INTERNAL_CLIENT_LOCAL_ADDR ), getContextData ( ctx , INTERNAL_CLIENT_REMOTE_ADDR ));
637
637
638
- clientReq . connection () .closeHandler (v -> {
638
+ connection .closeHandler (v -> {
639
639
setContextData (ctx , INTERNAL_CLIENT_CONNECTION_OPEN , false );
640
- log .debug ("{} --> {} closed" , getContextData (ctx , INTERNAL_CLIENT_LOCAL_ADDR ), getContextData (ctx , INTERNAL_CLIENT_REMOTE_ADDR ));
640
+ log .debug ("target {} -- {} closed" , getContextData (ctx , INTERNAL_CLIENT_LOCAL_ADDR ), getContextData (ctx , INTERNAL_CLIENT_REMOTE_ADDR ));
641
641
});
642
642
643
643
@@ -679,6 +679,15 @@ protected Handler<RoutingContext> routingContextHandler(HttpClient httpClient) {
679
679
// 暂停流读取
680
680
ctx .request ().pause ();
681
681
682
+ HttpConnection connection = ctx .request ().connection ();
683
+ setContextData (ctx , INTERNAL_SERVER_REMOTE_ADDR , connection .remoteAddress ().toString ());
684
+ setContextData (ctx , INTERNAL_SERVER_LOCAL_ADDR , connection .localAddress ().toString ());
685
+ // 记录请求开始时间
686
+ setContextData (ctx , INTERNAL_SEND_TIMESTAMP , System .currentTimeMillis ());
687
+ // 记录连接状态
688
+ setContextData (ctx , INTERNAL_SERVER_CONNECTION_OPEN , true );
689
+ log .debug ("source {} -- {} connected" , getContextData (ctx , INTERNAL_SERVER_LOCAL_ADDR ), getContextData (ctx , INTERNAL_SERVER_REMOTE_ADDR ));
690
+
682
691
// vertx的uri()是包含query参数的。而path()才是我们常说的不带有query的uri
683
692
// route不是线程安全的。route里的metadata应以路由为单元存储,而不是以请求为单元存储。一个路由会有很多请求。
684
693
// 若想要以请求为单元存储数据,应该使用routingContext.put
@@ -687,11 +696,6 @@ protected Handler<RoutingContext> routingContextHandler(HttpClient httpClient) {
687
696
setContextData (ctx , key , ctx .currentRoute ().getMetadata (key ));
688
697
}
689
698
690
- // 记录请求开始时间
691
- setContextData (ctx , INTERNAL_SEND_TIMESTAMP , System .currentTimeMillis ());
692
- // 记录连接状态
693
- setContextData (ctx , INTERNAL_SERVER_CONNECTION_OPEN , true );
694
-
695
699
// 获取代理地址
696
700
String proxyUrl = getProxyUrl (ctx , ctx .request (), ctx .response ());
697
701
setContextData (ctx , INTERNAL_PROXY_URL , proxyUrl );
@@ -707,15 +711,9 @@ protected Handler<RoutingContext> routingContextHandler(HttpClient httpClient) {
707
711
requestOptions .setMethod (ctx .request ().method ());
708
712
requestOptions .setFollowRedirects (getContextData (ctx , P_FOLLOW_REDIRECTS ) != null && Boolean .parseBoolean (getContextData (ctx , P_FOLLOW_REDIRECTS ).toString ()));
709
713
710
- // 注册客户端与代理服务之间连接的断开监听事件。可监听主动关闭和被动关闭
711
- setContextData (ctx , INTERNAL_SERVER_REMOTE_ADDR , ctx .request ().connection ().remoteAddress ().toString ());
712
- setContextData (ctx , INTERNAL_SERVER_LOCAL_ADDR , ctx .request ().connection ().localAddress ().toString ());
713
-
714
- log .debug ("{} <-- {} connected" , getContextData (ctx , INTERNAL_SERVER_LOCAL_ADDR ), getContextData (ctx , INTERNAL_SERVER_REMOTE_ADDR ));
715
-
716
- ctx .request ().connection ().closeHandler (v -> {
714
+ connection .closeHandler (v -> {
717
715
setContextData (ctx , INTERNAL_SERVER_CONNECTION_OPEN , false );
718
- log .debug ("{} < -- {} closed" , getContextData (ctx , INTERNAL_SERVER_LOCAL_ADDR ), getContextData (ctx , INTERNAL_SERVER_REMOTE_ADDR ));
716
+ log .debug ("source {} -- {} closed" , getContextData (ctx , INTERNAL_SERVER_LOCAL_ADDR ), getContextData (ctx , INTERNAL_SERVER_REMOTE_ADDR ));
719
717
});
720
718
721
719
// 如果跨域由代理服务接管,那么针对跨域使用的OPTIONS预检请求,就由代理服务接管,而不经过实际的后端服务
0 commit comments