1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.handler.codec.http.websocketx;
17
18
19 import io.netty.channel.ChannelHandlerContext;
20 import io.netty.handler.codec.MessageToMessageDecoder;
21
22 import java.util.List;
23
24 abstract class WebSocketProtocolHandler extends MessageToMessageDecoder<WebSocketFrame> {
25 @Override
26 protected void decode(ChannelHandlerContext ctx, WebSocketFrame frame, List<Object> out) throws Exception {
27 if (frame instanceof PingWebSocketFrame) {
28 frame.content().retain();
29 ctx.channel().writeAndFlush(new PongWebSocketFrame(frame.content()));
30 return;
31 }
32 if (frame instanceof PongWebSocketFrame) {
33
34 return;
35 }
36
37 out.add(frame.retain());
38 }
39
40 @Override
41 public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
42 ctx.fireExceptionCaught(cause);
43 ctx.close();
44 }
45 }