1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.example.http.websocketx.server;
17
18 import io.netty.channel.ChannelHandlerContext;
19 import io.netty.channel.SimpleChannelInboundHandler;
20 import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
21 import io.netty.handler.codec.http.websocketx.WebSocketFrame;
22 import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;
23
24 import java.util.Locale;
25
26
27
28
29 public class WebSocketFrameHandler extends SimpleChannelInboundHandler<WebSocketFrame> {
30
31 @Override
32 protected void channelRead0(ChannelHandlerContext ctx, WebSocketFrame frame) throws Exception {
33
34
35 if (frame instanceof TextWebSocketFrame) {
36
37 String request = ((TextWebSocketFrame) frame).text();
38 ctx.channel().writeAndFlush(new TextWebSocketFrame(request.toUpperCase(Locale.US)));
39 } else {
40 String message = "unsupported frame type: " + frame.getClass().getName();
41 throw new UnsupportedOperationException(message);
42 }
43 }
44
45 @Override
46 public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
47 if (evt instanceof WebSocketServerProtocolHandler.HandshakeComplete) {
48
49 ctx.pipeline().remove(WebSocketIndexPageHandler.class);
50 } else {
51 super.userEventTriggered(ctx, evt);
52 }
53 }
54 }