1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| public class MyWebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {
@Override public void channelActive(ChannelHandlerContext ctx) throws Exception { System.out.println("与客户端建立连接,通道开启!");
MyChannelHandlerPool.channelGroup.add(ctx.channel()); }
@Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { System.out.println("与客户端断开连接,通道关闭!"); MyChannelHandlerPool.channelGroup.remove(ctx.channel()); }
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (null != msg && msg instanceof FullHttpRequest) { FullHttpRequest request = (FullHttpRequest) msg; String uri = request.uri();
Map paramMap=getUrlParams(uri); System.out.println("接收到的参数是:"+JSON.toJSONString(paramMap)); if(uri.contains("?")){ String newUri=uri.substring(0,uri.indexOf("?")); System.out.println(newUri); request.setUri(newUri); }
}else if(msg instanceof TextWebSocketFrame){ TextWebSocketFrame frame=(TextWebSocketFrame)msg; System.out.println("客户端收到服务器数据:" +frame.text()); sendAllMessage(frame.text()); } super.channelRead(ctx, msg); }
@Override protected void channelRead0(ChannelHandlerContext channelHandlerContext, TextWebSocketFrame textWebSocketFrame) throws Exception {
}
private void sendAllMessage(String message){ MyChannelHandlerPool.channelGroup.writeAndFlush( new TextWebSocketFrame(message)); }
private static Map getUrlParams(String url){ Map<String,String> map = new HashMap<>(); url = url.replace("?",";"); if (!url.contains(";")){ return map; } if (url.split(";").length > 0){ String[] arr = url.split(";")[1].split("&"); for (String s : arr){ String key = s.split("=")[0]; String value = s.split("=")[1]; map.put(key,value); } return map;
}else{ return map; } } }
|