mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-21 19:45:09 +08:00
Merge branch 'dev-new' into dev-new-rabbitmq
This commit is contained in:
@@ -51,9 +51,14 @@ public class NettyServerManager implements CommandLineRunner {
|
||||
.handler(new LoggingHandler(LogLevel.DEBUG))
|
||||
// .option(ChannelOption.SO_BACKLOG, 128) // 默认128
|
||||
.option(ChannelOption.SO_BACKLOG, 1024)
|
||||
.option(ChannelOption.SO_REUSEADDR, true)
|
||||
.childOption(ChannelOption.SO_KEEPALIVE, true)
|
||||
// .option(ChannelOption.SO_REUSEADDR, true)
|
||||
.childOption(ChannelOption.SO_KEEPALIVE, true) // 保持连接
|
||||
.childOption(ChannelOption.TCP_NODELAY, true) // 禁用 Nagle 算法
|
||||
.childOption(ChannelOption.SO_RCVBUF, 64 * 1024) // 接收缓冲区
|
||||
.childOption(ChannelOption.SO_SNDBUF, 64 * 1024) // 发送缓冲区
|
||||
.childOption(ChannelOption.WRITE_BUFFER_WATER_MARK, new WriteBufferWaterMark(32 * 1024, 64 * 1024)) // 写缓冲水位
|
||||
.childOption(ChannelOption.SO_REUSEADDR, true)
|
||||
.childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) // 启用池化内存分配器
|
||||
.childHandler(nettyServerChannelInitializer)
|
||||
.localAddress(new InetSocketAddress(host, port));
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@ public class NettyServerChannelInitializer extends ChannelInitializer<SocketChan
|
||||
// pipeline.addLast("frameDecoder", new YkcProtocolDecoder());
|
||||
pipeline.addLast("decoder", new ByteArrayDecoder());
|
||||
pipeline.addLast("encoder", new ByteArrayDecoder());
|
||||
//读超时时间设置为10s,0表示不监控
|
||||
pipeline.addLast(new IdleStateHandler(60, 0, 0, TimeUnit.SECONDS));
|
||||
// 读超时时间设置为30s,0表示不监控
|
||||
pipeline.addLast(new IdleStateHandler(30, 0, 0, TimeUnit.SECONDS));
|
||||
pipeline.addLast("handler", nettyServerHandler);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,8 +7,6 @@ import com.jsowell.common.enums.ykc.PileChannelEntity;
|
||||
import com.jsowell.common.util.BytesUtil;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
import com.jsowell.common.util.YKCUtils;
|
||||
import com.jsowell.common.util.RpcUtil;
|
||||
import com.jsowell.common.protocol.SyncPromise;
|
||||
import com.jsowell.netty.service.yunkuaichong.YKCBusinessService;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.*;
|
||||
@@ -41,7 +39,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
|
||||
*/
|
||||
private static final ConcurrentHashMap<ChannelId, ChannelHandlerContext> CHANNEL_MAP = new ConcurrentHashMap<>();
|
||||
|
||||
private final List<String> notPrintFrameTypeList = Lists.newArrayList("0x03");
|
||||
private final List<String> notPrintFrameTypeList = Lists.newArrayList(); // "0x03"
|
||||
|
||||
/**
|
||||
* 有客户端连接服务器会触发此函数
|
||||
@@ -136,21 +134,21 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
|
||||
String frameType = YKCUtils.frameType2Str(frameTypeBytes);
|
||||
|
||||
// 判断该帧类型是否为某请求帧的应答帧
|
||||
String requestFrameType = YKCFrameTypeCode.PileAnswersRelation.getRequestFrameType(frameType);
|
||||
// String requestFrameType = YKCFrameTypeCode.PileAnswersRelation.getRequestFrameType(frameType);
|
||||
// log.info("同步获取响应数据-判断该帧类型是否为某请求帧的应答帧, frameType:{}, requestFrameType:{}", frameType, requestFrameType);
|
||||
if (StringUtils.isNotBlank(requestFrameType)) {
|
||||
// 根据请求id,在集合中找到与外部线程通信的SyncPromise对象
|
||||
String msgId = ctx.channel().id().toString() + "_" + requestFrameType;
|
||||
// log.info("同步获取响应数据-收到消息, msgId:{}", msgId);
|
||||
SyncPromise syncPromise = RpcUtil.getSyncPromiseMap().get(msgId);
|
||||
if(syncPromise != null) {
|
||||
// 设置响应结果
|
||||
syncPromise.setRpcResult(ykcDataProtocol.getBytes());
|
||||
// 唤醒外部线程
|
||||
// log.info("同步获取响应数据-唤醒外部线程, SyncPromise:{}", JSON.toJSONString(syncPromise));
|
||||
syncPromise.wake();
|
||||
}
|
||||
}
|
||||
// if (StringUtils.isNotBlank(requestFrameType)) {
|
||||
// // 根据请求id,在集合中找到与外部线程通信的SyncPromise对象
|
||||
// String msgId = ctx.channel().id().toString() + "_" + requestFrameType;
|
||||
// // log.info("同步获取响应数据-收到消息, msgId:{}", msgId);
|
||||
// SyncPromise syncPromise = RpcUtil.getSyncPromiseMap().get(msgId);
|
||||
// if(syncPromise != null) {
|
||||
// // 设置响应结果
|
||||
// syncPromise.setRpcResult(ykcDataProtocol.getBytes());
|
||||
// // 唤醒外部线程
|
||||
// // log.info("同步获取响应数据-唤醒外部线程, SyncPromise:{}", JSON.toJSONString(syncPromise));
|
||||
// syncPromise.wake();
|
||||
// }
|
||||
// }
|
||||
|
||||
// 获取序列号域
|
||||
int serialNumber = BytesUtil.bytesToIntLittle(ykcDataProtocol.getSerialNumber());
|
||||
|
||||
Reference in New Issue
Block a user