@@ -289,12 +289,12 @@ protected Object getRouteMetadata(Route route, String key) {
289289 * @param value 数据值
290290 */
291291 protected void setContextData (RoutingContext ctx , String key , Object value ) {
292- ctx .put (key , value == null ? "" : value );
292+ ctx .put (key , value == null ? "null " : value );
293293 }
294294
295295 protected Object getContextData (RoutingContext ctx , String key ) {
296296 Object metadata = ctx .get (key );
297- return metadata == null ? "" : metadata ;
297+ return metadata == null ? "null " : metadata ;
298298 }
299299
300300 protected HttpServerResponse setStatusCode (RoutingContext ctx , HttpServerResponse resp , int code ) {
@@ -630,14 +630,14 @@ protected Handler<AsyncResult<HttpClientRequest>> connectHandler(RoutingContext
630630 setContextData (ctx , INTERNAL_CLIENT_CONNECTION_OPEN , true );
631631
632632 // 注册客户端与代理服务之间连接的断开监听事件。可监听主动关闭和被动关闭
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 ));
637637
638- clientReq . connection () .closeHandler (v -> {
638+ connection .closeHandler (v -> {
639639 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 ));
641641 });
642642
643643
@@ -679,6 +679,15 @@ protected Handler<RoutingContext> routingContextHandler(HttpClient httpClient) {
679679 // 暂停流读取
680680 ctx .request ().pause ();
681681
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+
682691 // vertx的uri()是包含query参数的。而path()才是我们常说的不带有query的uri
683692 // route不是线程安全的。route里的metadata应以路由为单元存储,而不是以请求为单元存储。一个路由会有很多请求。
684693 // 若想要以请求为单元存储数据,应该使用routingContext.put
@@ -687,11 +696,6 @@ protected Handler<RoutingContext> routingContextHandler(HttpClient httpClient) {
687696 setContextData (ctx , key , ctx .currentRoute ().getMetadata (key ));
688697 }
689698
690- // 记录请求开始时间
691- setContextData (ctx , INTERNAL_SEND_TIMESTAMP , System .currentTimeMillis ());
692- // 记录连接状态
693- setContextData (ctx , INTERNAL_SERVER_CONNECTION_OPEN , true );
694-
695699 // 获取代理地址
696700 String proxyUrl = getProxyUrl (ctx , ctx .request (), ctx .response ());
697701 setContextData (ctx , INTERNAL_PROXY_URL , proxyUrl );
@@ -707,15 +711,9 @@ protected Handler<RoutingContext> routingContextHandler(HttpClient httpClient) {
707711 requestOptions .setMethod (ctx .request ().method ());
708712 requestOptions .setFollowRedirects (getContextData (ctx , P_FOLLOW_REDIRECTS ) != null && Boolean .parseBoolean (getContextData (ctx , P_FOLLOW_REDIRECTS ).toString ()));
709713
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 -> {
717715 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 ));
719717 });
720718
721719 // 如果跨域由代理服务接管,那么针对跨域使用的OPTIONS预检请求,就由代理服务接管,而不经过实际的后端服务
0 commit comments