22
22
import io .netty .handler .codec .http .LastHttpContent ;
23
23
import io .netty .handler .codec .http .websocketx .BinaryWebSocketFrame ;
24
24
import io .netty .handler .codec .http .websocketx .CloseWebSocketFrame ;
25
+ import io .netty .handler .codec .http .websocketx .PingWebSocketFrame ;
26
+ import io .netty .handler .codec .http .websocketx .PongWebSocketFrame ;
27
+ import io .netty .handler .codec .http .websocketx .TextWebSocketFrame ;
25
28
import io .netty .handler .codec .http .websocketx .WebSocketFrame ;
26
29
27
30
import java .io .IOException ;
@@ -74,7 +77,7 @@ public void handle(Channel channel, NettyResponseFuture<?> future, Object e) thr
74
77
HttpResponse response = (HttpResponse ) e ;
75
78
// we buffer the response until we get the LastHttpContent
76
79
future .setPendingResponse (response );
77
-
80
+
78
81
} else if (e instanceof LastHttpContent ) {
79
82
HttpResponse response = future .getPendingResponse ();
80
83
future .setPendingResponse (null );
@@ -115,8 +118,7 @@ public void handle(Channel channel, NettyResponseFuture<?> future, Object e) thr
115
118
}
116
119
117
120
String accept = response .headers ().get (HttpHeaders .Names .SEC_WEBSOCKET_ACCEPT );
118
- String key = getAcceptKey (future .getNettyRequest ().getHttpRequest ().headers ()
119
- .get (HttpHeaders .Names .SEC_WEBSOCKET_KEY ));
121
+ String key = getAcceptKey (future .getNettyRequest ().getHttpRequest ().headers ().get (HttpHeaders .Names .SEC_WEBSOCKET_KEY ));
120
122
if (accept == null || !accept .equals (key )) {
121
123
requestSender .abort (future , new IOException (String .format ("Invalid challenge. Actual: %s. Expected: %s" , accept , key )));
122
124
}
@@ -141,13 +143,17 @@ public void handle(Channel channel, NettyResponseFuture<?> future, Object e) thr
141
143
ByteBuf buf = frame .content ();
142
144
if (buf != null && buf .readableBytes () > 0 ) {
143
145
try {
144
- NettyResponseBodyPart rp = nettyConfig .getBodyPartFactory ().newResponseBodyPart (buf , frame .isFinalFragment ());
145
- handler .onBodyPartReceived (rp );
146
+ NettyResponseBodyPart part = nettyConfig .getBodyPartFactory ().newResponseBodyPart (buf , frame .isFinalFragment ());
147
+ handler .onBodyPartReceived (part );
146
148
147
149
if (frame instanceof BinaryWebSocketFrame ) {
148
- webSocket .onBinaryFragment (rp );
149
- } else {
150
- webSocket .onTextFragment (rp );
150
+ webSocket .onBinaryFragment (part );
151
+ } else if (frame instanceof TextWebSocketFrame ) {
152
+ webSocket .onTextFragment (part );
153
+ } else if (frame instanceof PingWebSocketFrame ) {
154
+ webSocket .onPing (part );
155
+ } else if (frame instanceof PongWebSocketFrame ) {
156
+ webSocket .onPong (part );
151
157
}
152
158
} finally {
153
159
buf .release ();
@@ -196,7 +202,8 @@ public void onClose(Channel channel) {
196
202
WebSocketUpgradeHandler h = WebSocketUpgradeHandler .class .cast (nettyResponse .getAsyncHandler ());
197
203
NettyWebSocket webSocket = NettyWebSocket .class .cast (h .onCompleted ());
198
204
199
- // FIXME How could this test not succeed, we just checked above that attribute is a NettyResponseFuture????
205
+ // FIXME How could this test not succeed, we just checked above that
206
+ // attribute is a NettyResponseFuture????
200
207
logger .trace ("Connection was closed abnormally (that is, with no close frame being sent)." );
201
208
if (attribute != DiscardEvent .INSTANCE && webSocket != null )
202
209
webSocket .close (1006 , "Connection was closed abnormally (that is, with no close frame being sent)." );
0 commit comments