diff --git a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/user/websocket/HttpHeadersHandler.java b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/user/websocket/HttpHeadersHandler.java index df64b64..b5112e4 100644 --- a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/user/websocket/HttpHeadersHandler.java +++ b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/user/websocket/HttpHeadersHandler.java @@ -1,7 +1,10 @@ package com.abin.mallchat.custom.user.websocket; +import cn.hutool.core.util.StrUtil; +import cn.hutool.core.util.URLUtil; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.handler.codec.http.DefaultFullHttpRequest; import io.netty.handler.codec.http.FullHttpRequest; import io.netty.handler.codec.http.HttpHeaders; import io.netty.util.AttributeKey; @@ -14,16 +17,27 @@ public class HttpHeadersHandler extends ChannelInboundHandlerAdapter { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof FullHttpRequest) { - HttpHeaders headers = ((FullHttpRequest) msg).headers(); + FullHttpRequest request = (FullHttpRequest) msg; + HttpHeaders headers = request.headers(); String ip = headers.get("X-Real-IP"); if (StringUtils.isEmpty(ip)) {//如果没经过nginx,就直接获取远端地址 InetSocketAddress address = (InetSocketAddress) ctx.channel().remoteAddress(); ip = address.getAddress().getHostAddress(); } + + String[] uriSplit = request.uri().split("[?]"); + FullHttpRequest modifiedRequest = new DefaultFullHttpRequest(request.protocolVersion(), request.method(), uriSplit[0]); + modifiedRequest.headers().add(headers); + modifiedRequest.content().writeBytes(request.content()); + + NettyUtil.setAttr(ctx.channel(), NettyUtil.IP, ip); - String token = headers.get("token"); - NettyUtil.setAttr(ctx.channel(), NettyUtil.TOKEN, token); + if (uriSplit.length>=2) { + NettyUtil.setAttr(ctx.channel(), NettyUtil.TOKEN, uriSplit[1]); + } + ctx.fireChannelRead(modifiedRequest); + }else { + super.channelRead(ctx, msg); } - ctx.fireChannelRead(msg); } } \ No newline at end of file diff --git a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/user/websocket/NettyWebSocketServerHandler.java b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/user/websocket/NettyWebSocketServerHandler.java index b4b5734..e89030e 100644 --- a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/user/websocket/NettyWebSocketServerHandler.java +++ b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/user/websocket/NettyWebSocketServerHandler.java @@ -93,7 +93,10 @@ public class NettyWebSocketServerHandler extends SimpleChannelInboundHandler