v1.0.0版本发布

4

一 新增功能

1 服务端

(1)基于基础创建类的Netty服务端搭建方法与支持快速构建的处理器;

package com.catalpawoo.easynetty.start.handler;

import com.catalpawoo.easynetty.common.utils.ObjectUtil;
import io.netty.channel.*;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Easy-Netty服务端自定义请求处理类
 *
 * @author wuzijing
 * @apiNote Easy-Netty服务端自定义请求处理类
 * @since 2024-06-22
 */
@Slf4j
@Component
@ChannelHandler.Sharable
public class EasyNettyServerHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {

    private final Map<ChannelId, Channel> channelMap = new ConcurrentHashMap<>();

    @Override
    protected void channelRead0(ChannelHandlerContext channelHandlerContext, TextWebSocketFrame textWebSocketFrame) {
        if (ObjectUtil.isNull(textWebSocketFrame)) {
            return;
        }
        log.info(textWebSocketFrame.text());
    }

    @Override
    public void handlerAdded(ChannelHandlerContext channelHandlerContext) {
        this.channelMap.put(channelHandlerContext.channel().id(), channelHandlerContext.channel());
    }

    @Override
    public void userEventTriggered(ChannelHandlerContext channelHandlerContext, Object event) {
        if (event instanceof WebSocketServerProtocolHandler.HandshakeComplete complete) {
            log.info("easy-netty hand shake.");
        }
    }

    @Override
    public void handlerRemoved(ChannelHandlerContext channelHandlerContext) {
        this.channelMap.remove(channelHandlerContext.channel().id());
    }

}
@Slf4j
@SpringBootTest(classes = EasyNettyServerApplication.class, webEnvironment = RANDOM_PORT)
public class EasyNettyServerTest {

    @Autowired
    private EasyNettyHandler easyNettyHandler;

    @Autowired
    private EasyNettyServerHandler easyNettyServerHandler;

    @Test
    public void testEasyNettyServer() {
        easyNettyHandler.startNettyServer(easyNettyServerHandler, "/socket", 9000, 1).asShortText();
    }

}

(2)基于构造器的Netty服务端搭建方法;

(存在BUG,无法使用,将在下一版本中修复)

(3)其他通用方法。

二 引入

<dependency>
    <groupId>io.github.catalpawoo524</groupId>
    <artifactId>easy-netty-spring-boot3-starter</artifactId>
    <version>1.0.0</version>
</dependency>

三 即将实现

1 基于注解的服务端搭建方法;

2 基于Yaml配置、代码配置以及注解的客户端搭建方法;

3 扩展JDK8与SpringBoot2.0的支持。