From 58aae7a67d93a99edb8144a6d2b71d6151e7c806 Mon Sep 17 00:00:00 2001
From: wujiawei <12345678>
Date: Fri, 30 Aug 2024 17:12:23 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90fix=E3=80=91=20=E8=87=AA=E5=AE=9A?=
=?UTF-8?q?=E4=B9=89netty=20=E6=8E=A5=E6=94=B6=E6=95=B0=E6=8D=AE=E7=BC=93?=
=?UTF-8?q?=E5=86=B2=E6=9C=9F=E6=8E=A7=E5=88=B6=E6=8E=A5=E6=94=B6=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E5=A4=A7=E5=B0=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +-
.../netty/filter/NettyClientRealFilter.java | 3 ++
.../netty/socket/NettyClientRealSocket.java | 12 ++++-
...portHandleChannelTransferTypeAdvanced.java | 4 +-
.../netty/filter/NettyServerFilter.java | 8 ++++
.../server/netty/handler/VisitorHandler.java | 7 +++
.../socket/NettyOnCloudNettyServerSocket.java | 14 +++++-
.../netty/socket/NettyVisitorSocket.java | 17 ++++++-
.../README.md | 2 +-
.../pom.xml | 46 +++++++++----------
.../src/main/resources/application-dev.yml | 4 +-
.../pom.xml | 46 +++++++++----------
.../pom.xml | 46 +++++++++----------
13 files changed, 132 insertions(+), 79 deletions(-)
diff --git a/pom.xml b/pom.xml
index da693e0..44d596f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
wu-lazy-cloud-heartbeat-common
-
+ wu-lazy-cloud-heartbeat-start
diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/filter/NettyClientRealFilter.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/filter/NettyClientRealFilter.java
index f2b200a..a4457d2 100644
--- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/filter/NettyClientRealFilter.java
+++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/filter/NettyClientRealFilter.java
@@ -4,6 +4,8 @@ import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
+import io.netty.handler.codec.compression.JdkZlibDecoder;
+import io.netty.handler.codec.compression.JdkZlibEncoder;
import org.framework.lazy.cloud.network.heartbeat.client.netty.handler.NettyClientRealHandler;
import org.framework.lazy.cloud.network.heartbeat.common.decoder.TransferDecoder;
import org.framework.lazy.cloud.network.heartbeat.common.encoder.TransferEncoder;
@@ -22,5 +24,6 @@ public class NettyClientRealFilter extends ChannelInitializer {
pipeline.addLast(new TransferDecoder(Integer.MAX_VALUE, 1024 * 1024*10));
pipeline.addLast(new TransferEncoder());
pipeline.addLast(new NettyClientRealHandler());
+
}
}
diff --git a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientRealSocket.java b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientRealSocket.java
index 82d8a61..055d5e5 100644
--- a/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientRealSocket.java
+++ b/wu-lazy-cloud-heartbeat-client/src/main/java/org/framework/lazy/cloud/network/heartbeat/client/netty/socket/NettyClientRealSocket.java
@@ -58,9 +58,9 @@ public class NettyClientRealSocket {
// .option(ChannelOption.SO_RCVBUF, 2048 * 1024)
// 设置写缓冲区为1M
// .option(ChannelOption.SO_SNDBUF, 1024 * 1024)
- .option(ChannelOption.TCP_NODELAY, true)
+ .option(ChannelOption.TCP_NODELAY, false)
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1000 * 60)//连接超时时间设置为 60 秒
- .option(ChannelOption.SO_BACKLOG, 128)//务端接受连接的队列长度 默认128
+// .option(ChannelOption.SO_BACKLOG, 128)//务端接受连接的队列长度 默认128
.option(ChannelOption.RCVBUF_ALLOCATOR, new NettyRecvByteBufAllocator(1024 * 1024))//用于Channel分配接受Buffer的分配器 默认AdaptiveRecvByteBufAllocator.DEFAULT
.handler(new NettyClientRealFilter())
@@ -136,6 +136,14 @@ public class NettyClientRealSocket {
Bootstrap bootstrap = new Bootstrap();
bootstrap.group(eventLoopGroup)
.channel(NioSocketChannel.class)
+ .option(ChannelOption.SO_KEEPALIVE, true)
+ .option(ChannelOption.TCP_NODELAY, false)
+ .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1000 * 60)//连接超时时间设置为 60 秒
+ .option(ChannelOption.SO_BACKLOG, 256)//务端接受连接的队列长度 默认128
+ .option(ChannelOption.RCVBUF_ALLOCATOR, new NettyRecvByteBufAllocator(1024 * 1024))//用于Channel分配接受Buffer的分配器 默认AdaptiveRecvByteBufAllocator.DEFAULT
+
+ .option(ChannelOption.WRITE_BUFFER_WATER_MARK, WriteBufferWaterMark.DEFAULT)
+
.handler(new NettyClientVisitorRealFilter(new ChannelTypeAdapter(handleChannelTypeAdvancedList)))
;
diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportHandleChannelTransferTypeAdvanced.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportHandleChannelTransferTypeAdvanced.java
index 1e2a9a7..f9cc677 100644
--- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportHandleChannelTransferTypeAdvanced.java
+++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/advanced/ServerHandleReportHandleChannelTransferTypeAdvanced.java
@@ -37,7 +37,7 @@ public class ServerHandleReportHandleChannelTransferTypeAdvanced extends Abstrac
public void doHandler(Channel channel, NettyProxyMsg msg) {
String clientId = new String(msg.getClientId());
Integer visitorPort = Integer.valueOf(new String(msg.getVisitorPort()));
-// log.info("接收到客户端:[{}]内网穿透返回的数据:[{}]", clientId, msg.getData().length);
+ log.info("访客端口:[{}] 接收到客户端:[{}]",visitorPort, clientId);
log.debug("接收到客户端:[{}]内网穿透返回的数据:[{}]", clientId, new String(msg.getData()));
// 将数据转发访客通道
byte[] visitorId = msg.getVisitorId();
@@ -46,7 +46,7 @@ public class ServerHandleReportHandleChannelTransferTypeAdvanced extends Abstrac
ByteBuf buf = visitor.config().getAllocator().buffer(msg.getData().length);
buf.writeBytes(msg.getData());
visitor.writeAndFlush(buf);
-
+ log.info("writeAndFlush");
// 记录出口数据
ServerChannelFlow serverChannelFlow = ServerChannelFlow
.builder()
diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/NettyServerFilter.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/NettyServerFilter.java
index 3958b23..b91df98 100644
--- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/NettyServerFilter.java
+++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/filter/NettyServerFilter.java
@@ -3,6 +3,10 @@ package org.framework.lazy.cloud.network.heartbeat.server.netty.filter;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
+import io.netty.handler.codec.compression.JdkZlibDecoder;
+import io.netty.handler.codec.compression.JdkZlibEncoder;
+import io.netty.handler.codec.protobuf.ProtobufDecoder;
+import io.netty.handler.codec.protobuf.ProtobufEncoder;
import io.netty.handler.codec.string.StringDecoder;
import io.netty.handler.codec.string.StringEncoder;
import io.netty.handler.timeout.IdleStateHandler;
@@ -47,5 +51,9 @@ public class NettyServerFilter extends ChannelInitializer {
// 类型处理器适配器
ChannelTypeAdapter channelTypeAdapter = new ChannelTypeAdapter(handleChannelTypeAdvancedList);
pipeline.addLast("doHandler", new NettyServerHandler(channelTypeAdapter));// 服务端业务逻辑
+
+
+
+
}
}
\ No newline at end of file
diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/VisitorHandler.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/VisitorHandler.java
index ac8cd3a..c6b10a1 100644
--- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/VisitorHandler.java
+++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/handler/VisitorHandler.java
@@ -158,6 +158,13 @@ public class VisitorHandler extends SimpleChannelInboundHandler {
// if (clientChannel != null) {
// clientChannel.config().setOption(ChannelOption.AUTO_READ, visitorChannel.isWritable());
// }
+ if (ctx.channel().isWritable()) {
+ System.out.println("Channel is writable again");
+ // 恢复之前暂停的操作,如写入数据
+ } else {
+ System.out.println("Channel is not writable");
+ // 暂停写入操作,等待可写状态
+ }
log.info("channelWritabilityChanged");
super.channelWritabilityChanged(ctx);
}
diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyOnCloudNettyServerSocket.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyOnCloudNettyServerSocket.java
index 2d3a13d..6d9aa53 100644
--- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyOnCloudNettyServerSocket.java
+++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyOnCloudNettyServerSocket.java
@@ -8,6 +8,7 @@ import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;
+import org.framework.lazy.cloud.network.heartbeat.common.allocator.NettyRecvByteBufAllocator;
import org.framework.lazy.cloud.network.heartbeat.server.netty.filter.NettyServerFilter;
public class NettyOnCloudNettyServerSocket {
@@ -31,9 +32,20 @@ public class NettyOnCloudNettyServerSocket {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
// 给服务端channel设置属性
- .option(ChannelOption.SO_BACKLOG, 128)
+ .childOption(ChannelOption.SO_KEEPALIVE, true)
+
+ // 设置读缓冲区为2M
+ .childOption(ChannelOption.SO_RCVBUF, 2048 * 1024)
+ // 设置写缓冲区为1M
+ .childOption(ChannelOption.SO_SNDBUF, 1024 * 1024)
.childOption(ChannelOption.SO_KEEPALIVE, true)
+ .childOption(ChannelOption.TCP_NODELAY, false)
+ .childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1000 * 60)//连接超时时间设置为 60 秒
+ .childOption(ChannelOption.SO_BACKLOG, 512)//务端接受连接的队列长度 默认128
+ .childOption(ChannelOption.RCVBUF_ALLOCATOR, new NettyRecvByteBufAllocator(1024 * 1024))//用于Channel分配接受Buffer的分配器 默认AdaptiveRecvByteBufAllocator.DEFAULT
+
+
.childHandler(nettyServerFilter);
channelFuture = b.bind(serverPort).sync();
diff --git a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyVisitorSocket.java b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyVisitorSocket.java
index e66f788..c62c9cd 100644
--- a/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyVisitorSocket.java
+++ b/wu-lazy-cloud-heartbeat-server/src/main/java/org/framework/lazy/cloud/network/heartbeat/server/netty/socket/NettyVisitorSocket.java
@@ -10,6 +10,7 @@ import org.framework.lazy.cloud.network.heartbeat.common.InternalNetworkPenetrat
import org.framework.lazy.cloud.network.heartbeat.common.NettyClientVisitorContext;
import org.framework.lazy.cloud.network.heartbeat.common.NettyVisitorPortContext;
import org.framework.lazy.cloud.network.heartbeat.common.adapter.ChannelFlowAdapter;
+import org.framework.lazy.cloud.network.heartbeat.common.allocator.NettyRecvByteBufAllocator;
import org.framework.lazy.cloud.network.heartbeat.server.netty.filter.VisitorFilter;
import java.io.IOException;
@@ -48,8 +49,22 @@ public class NettyVisitorSocket {
ServerBootstrap b = new ServerBootstrap();
b
.group(bossGroup, workerGroup)
- .childOption(ChannelOption.SO_KEEPALIVE, true)
.channel(NioServerSocketChannel.class)
+
+
+ // 设置读缓冲区为2M
+ .childOption(ChannelOption.SO_RCVBUF, 2048 * 1024)
+ // 设置写缓冲区为1M
+ .childOption(ChannelOption.SO_SNDBUF, 1024 * 1024)
+
+
+ .childOption(ChannelOption.SO_KEEPALIVE, true)
+ .childOption(ChannelOption.TCP_NODELAY, false)
+ .childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1000 * 60)//连接超时时间设置为 60 秒
+ .childOption(ChannelOption.SO_BACKLOG, 256)//务端接受连接的队列长度 默认128
+ .childOption(ChannelOption.RCVBUF_ALLOCATOR, new NettyRecvByteBufAllocator(1024 * 1024))//用于Channel分配接受Buffer的分配器 默认AdaptiveRecvByteBufAllocator.DEFAULT
+
+
.childHandler(visitorFilter);
ChannelFuture sync = b.bind(visitorPort).sync();
sync.addListener((ChannelFutureListener) future -> {
diff --git a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/README.md b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/README.md
index 7c61a0a..64c2e20 100644
--- a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/README.md
+++ b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/README.md
@@ -33,7 +33,7 @@ docker push registry.cn-hangzhou.aliyuncs.com/wu-lazy/wu-lazy-cloud-heartbeat-cl
### run
```shell
-docker run -d -it --privileged --name client -p 6004:6004 registry.cn-hangzhou.aliyuncs.com/wu-lazy/wu-lazy-cloud-heartbeat-client-start:1.2.7-JDK17-NATIVE-SNAPSHOT
+docker run -d -it --privileged --name client -p 6004:6004 registry.cn-hangzhou.aliyuncs.com/wu-lazy/wu-lazy-cloud-heartbeat-client-start:1.2.7-JDK17-SNAPSHOT
```
diff --git a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/pom.xml b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/pom.xml
index fd80e75..bee107f 100644
--- a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/pom.xml
+++ b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/pom.xml
@@ -27,29 +27,29 @@
-
- org.graalvm.buildtools
- native-maven-plugin
- 0.9.23
-
-
- ${project.artifactId}
-
- org.framework.lazy.cloud.network.heartbeat.client.LazyCloudHeartbeatClientStart
-
- --no-fallback
-
-
-
-
- build-native
-
- compile-no-fork
-
- package
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
org.springframework.boot
spring-boot-maven-plugin
diff --git a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application-dev.yml b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application-dev.yml
index a925984..d96b473 100644
--- a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application-dev.yml
+++ b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-client-start/src/main/resources/application-dev.yml
@@ -2,8 +2,8 @@ spring:
lazy:
netty:
client:
- inet-host: 127.0.0.1
- inet-port: 7001
+ inet-host: 124.222.48.62
+ inet-port: 32647
inet-path: wu-lazy-cloud-heartbeat-server
client-id: wujiawei # 客户端ID
# inet-host: 124.222.48.62 # 服务端地址
diff --git a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-cluster-start/pom.xml b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-cluster-start/pom.xml
index 688acce..d68bc26 100644
--- a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-cluster-start/pom.xml
+++ b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-cluster-start/pom.xml
@@ -32,29 +32,29 @@
-
- org.graalvm.buildtools
- native-maven-plugin
- 0.9.23
-
-
- ${project.artifactId}
-
- org.framework.lazy.cloud.network.heartbeat.server.cluster.start.LazyCloudHeartbeatServerClusterStart
-
- --no-fallback
-
-
-
-
- build-native
-
- compile-no-fork
-
- package
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
org.springframework.boot
spring-boot-maven-plugin
diff --git a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-start/pom.xml b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-start/pom.xml
index c63bfce..d08998e 100644
--- a/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-start/pom.xml
+++ b/wu-lazy-cloud-heartbeat-start/wu-lazy-cloud-heartbeat-server-start/pom.xml
@@ -32,29 +32,29 @@
-
- org.graalvm.buildtools
- native-maven-plugin
- 0.9.23
-
-
- ${project.artifactId}
-
- org.framework.lazy.cloud.network.heartbeat.server.LazyCloudHeartbeatServerStart
-
- --no-fallback
-
-
-
-
- build-native
-
- compile-no-fork
-
- package
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
org.springframework.boot
spring-boot-maven-plugin