From fbe5e24e41d808e1ade23b5b6c0ddb9a5bd0e721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BF=9C=E6=96=B9?= <3979434@qq.com> Date: Tue, 15 Feb 2022 20:52:27 +0800 Subject: [PATCH] =?UTF-8?q?websocket=E6=94=AF=E6=8C=81=E6=8F=A1=E6=89=8B?= =?UTF-8?q?=E6=97=B6=E9=89=B4=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++- .../libs/cim-server-sdk-netty-4.1.0.jar | Bin 82957 -> 83123 bytes .../com/farsunset/cim/config/CIMConfig.java | 2 +- .../cim/config/properties/CIMProperties.java | 14 ++++++++++ .../src/main/resources/application.properties | 4 ++- cim-server-sdk/cim-server-sdk-netty.iml | 24 ------------------ .../server/handler/CIMNioSocketAcceptor.java | 16 +++++++++--- .../server/handshake/HandshakeHandler.java | 12 ++++++--- 8 files changed, 42 insertions(+), 35 deletions(-) delete mode 100644 cim-server-sdk/cim-server-sdk-netty.iml diff --git a/README.md b/README.md index 54661ce..b41ff8d 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,9 @@ CIM采用业内主流开源技术构建,易于扩展和使用,并完美支 版本:4.1.0/时间:2022-02-15 1.websocket支持在握手时鉴权验证 -2.websocketPath 由 "/" 变更为 "" wss和ws链接地址后面不需要加/ + +https://www.yuque.com/yuanfangxiyang/ma4ytb/vvy3iz#mmdUX + +2.支持自定义配置websocketPath diff --git a/cim-boot-server/libs/cim-server-sdk-netty-4.1.0.jar b/cim-boot-server/libs/cim-server-sdk-netty-4.1.0.jar index 887f076e862d04c27bf8c200c2c3f90d8fef0d89..ee1132561a78a3a1b18cae981e812f42ce0702b0 100644 GIT binary patch delta 11579 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 delta 11358 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 X#S`+8_=Cy;HjoBtAplq)>lE;RzUvS; diff --git a/cim-boot-server/src/main/java/com/farsunset/cim/config/CIMConfig.java b/cim-boot-server/src/main/java/com/farsunset/cim/config/CIMConfig.java index 45ea155..539edbc 100644 --- a/cim-boot-server/src/main/java/com/farsunset/cim/config/CIMConfig.java +++ b/cim-boot-server/src/main/java/com/farsunset/cim/config/CIMConfig.java @@ -10,7 +10,6 @@ import com.farsunset.cim.sdk.server.handler.CIMRequestHandler; import com.farsunset.cim.sdk.server.model.SentBody; import com.farsunset.cim.service.SessionService; import io.netty.channel.Channel; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationListener; @@ -49,6 +48,7 @@ public class CIMConfig implements CIMRequestHandler, ApplicationListener - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cim-server-sdk/src/main/java/com/farsunset/cim/sdk/server/handler/CIMNioSocketAcceptor.java b/cim-server-sdk/src/main/java/com/farsunset/cim/sdk/server/handler/CIMNioSocketAcceptor.java index d6d585e..70e7ee4 100644 --- a/cim-server-sdk/src/main/java/com/farsunset/cim/sdk/server/handler/CIMNioSocketAcceptor.java +++ b/cim-server-sdk/src/main/java/com/farsunset/cim/sdk/server/handler/CIMNioSocketAcceptor.java @@ -58,7 +58,7 @@ import java.util.function.Predicate; public class CIMNioSocketAcceptor extends SimpleChannelInboundHandler{ private static final Logger LOGGER = LoggerFactory.getLogger(CIMNioSocketAcceptor.class); - private static final int PONG_TIME_OUT_COUNT = 3; + private static final int PONG_TIME_OUT_COUNT = 3; private final ThreadFactory bossThreadFactory; private final ThreadFactory workerThreadFactory; @@ -70,6 +70,7 @@ public class CIMNioSocketAcceptor extends SimpleChannelInboundHandler{ private final Integer appPort; private final Integer webPort; + private final String websocketPath; private final CIMRequestHandler outerRequestHandler; private final HandshakeHandler handshakeHandler; @@ -90,6 +91,7 @@ public class CIMNioSocketAcceptor extends SimpleChannelInboundHandler{ this.appPort = builder.appPort; this.outerRequestHandler = builder.outerRequestHandler; this.handshakeHandler = new HandshakeHandler(builder.handshakePredicate); + this.websocketPath = builder.websocketPath == null ? "/" : builder.websocketPath; bossThreadFactory = r -> { Thread thread = new Thread(r); @@ -145,8 +147,8 @@ public class CIMNioSocketAcceptor extends SimpleChannelInboundHandler{ } } - public void destroy() { - this.destroy(appBossGroup,appWorkerGroup); + public void destroy() { + this.destroy(appBossGroup,appWorkerGroup); this.destroy(webBossGroup,webWorkerGroup); } @@ -189,7 +191,7 @@ public class CIMNioSocketAcceptor extends SimpleChannelInboundHandler{ ch.pipeline().addLast(new HttpServerCodec()); ch.pipeline().addLast(new ChunkedWriteHandler()); ch.pipeline().addLast(new HttpObjectAggregator(4 * 1024)); - ch.pipeline().addLast(new WebSocketServerProtocolHandler("",false)); + ch.pipeline().addLast(new WebSocketServerProtocolHandler(websocketPath,false)); ch.pipeline().addLast(handshakeHandler); ch.pipeline().addLast(new WebMessageDecoder()); ch.pipeline().addLast(new WebMessageEncoder()); @@ -301,6 +303,7 @@ public class CIMNioSocketAcceptor extends SimpleChannelInboundHandler{ private Integer appPort; private Integer webPort; + private String websocketPath; private CIMRequestHandler outerRequestHandler; private Predicate handshakePredicate; @@ -314,6 +317,11 @@ public class CIMNioSocketAcceptor extends SimpleChannelInboundHandler{ return this; } + public Builder setWebsocketPath(String websocketPath) { + this.websocketPath = websocketPath; + return this; + } + /** * 设置应用层的sentBody处理handler */ diff --git a/cim-server-sdk/src/main/java/com/farsunset/cim/sdk/server/handshake/HandshakeHandler.java b/cim-server-sdk/src/main/java/com/farsunset/cim/sdk/server/handshake/HandshakeHandler.java index fc00bd4..612872c 100644 --- a/cim-server-sdk/src/main/java/com/farsunset/cim/sdk/server/handshake/HandshakeHandler.java +++ b/cim-server-sdk/src/main/java/com/farsunset/cim/sdk/server/handshake/HandshakeHandler.java @@ -38,16 +38,20 @@ import java.util.function.Predicate; @ChannelHandler.Sharable public class HandshakeHandler extends ChannelInboundHandlerAdapter { - private final Predicate handshakePredicate; + /* + 客户端接收到的CloseEvent事件类型 + 客户端可通过该code判断是握手鉴权失败 + */ + private static final int UNAUTHORIZED_CODE = 4001; - private final WebSocketCloseStatus closeStatus = new WebSocketCloseStatus(HttpResponseStatus.UNAUTHORIZED.code(),HttpResponseStatus.UNAUTHORIZED.reasonPhrase()); + private final Predicate handshakePredicate; public HandshakeHandler(Predicate handshakePredicate) { this.handshakePredicate = handshakePredicate; } @Override - public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { + public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { super.userEventTriggered(ctx, evt); @@ -67,7 +71,7 @@ public class HandshakeHandler extends ChannelInboundHandlerAdapter { * 鉴权不通过,关闭链接 */ if (!handshakePredicate.test(HandshakeEvent.of(event))) { - context.channel().writeAndFlush(new CloseWebSocketFrame(closeStatus)).addListener(ChannelFutureListener.CLOSE); + context.channel().writeAndFlush(new CloseWebSocketFrame(UNAUTHORIZED_CODE,HttpResponseStatus.UNAUTHORIZED.reasonPhrase())).addListener(ChannelFutureListener.CLOSE); } } } \ No newline at end of file