diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/WebsocketRoutingFilter.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/WebsocketRoutingFilter.java index f15ef98f..8a3d1465 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/WebsocketRoutingFilter.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/WebsocketRoutingFilter.java @@ -209,10 +209,20 @@ public class WebsocketRoutingFilter implements GlobalFilter, Ordered { .flatMap(proxySession::close); // Use retain() for Reactor Netty Mono proxySessionSend = proxySession - .send(session.receive().doOnNext(WebSocketMessage::retain)); + .send(session.receive().doOnNext(WebSocketMessage::retain) + .doOnNext(webSocketMessage -> { + if (log.isTraceEnabled()) { + log.trace("proxySession(send from client): " + proxySession.getId() + ", corresponding session:" + session.getId() + ", packet: " + webSocketMessage.getPayloadAsText()); + } + })); // .log("proxySessionSend", Level.FINE); Mono serverSessionSend = session - .send(proxySession.receive().doOnNext(WebSocketMessage::retain)); + .send(proxySession.receive().doOnNext(WebSocketMessage::retain) + .doOnNext(webSocketMessage -> { + if (log.isTraceEnabled()) { + log.trace("session(send from backend): " + session.getId() + ", corresponding proxySession:" + proxySession.getId() + " packet: " + webSocketMessage.getPayloadAsText()); + } + })); // .log("sessionSend", Level.FINE); // Ensure closeStatus from one propagates to the other Mono.when(serverClose, proxyClose).subscribe();