# nehc-netty-server **Repository Path**: nehc-netty/nehc-netty-server ## Basic Information - **Project Name**: nehc-netty-server - **Description**: 基于Netty框架的高性能服务器实现,专注于网络通信优化,适用于高并发场景下的数据传输与处理。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-09 - **Last Updated**: 2025-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NEHC Netty Server 基于Netty和Spring Boot的高性能WebSocket/TCP服务器,支持大规模并发连接和实时通信。 ## 项目概述 NEHC Netty Server是一个基于Netty框架的高性能网络服务器,支持TCP和WebSocket协议,采用Java 21虚拟线程技术提升系统并发处理能力。项目基于Spring Boot框架开发,提供了完整的服务端应用解决方案,包括连接管理、消息处理、心跳检测等功能。 ### 主要特性 - **双协议支持**:同时支持TCP和WebSocket两种通信协议 - **高性能设计**:采用Netty异步事件驱动模型,支持高并发连接 - **虚拟线程**:利用Java 21虚拟线程提升系统吞吐量 - **完整监控**:实时监控系统资源和连接状态 - **心跳机制**:支持自动心跳检测,保持连接活跃 - **可扩展性**:模块化设计,易于扩展和定制 ## 项目结构 ``` server/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── nehc/ │ │ │ └── nettyserver/ │ │ │ ├── client/ # 客户端示例实现 │ │ │ ├── config/ # 服务器配置 │ │ │ ├── controller/ # REST API控制器 │ │ │ ├── handler/ # 消息处理器 │ │ │ ├── netty/ # Netty核心实现 │ │ │ ├── service/ # 业务服务层 │ │ │ ├── util/ # 工具类 │ │ │ └── NettyServerApplication.java # 应用入口 │ │ └── resources/ │ │ ├── application.yml # 应用配置文件 │ │ ├── static/ # 静态资源 │ │ └── templates/ # 模板文件 │ └── test/ # 测试代码 ├── target/ # 编译输出 ├── logs/ # 日志文件 ├── data/ # 数据文件 └── pom.xml # Maven配置文件 ``` ## 核心组件说明 ### NettyServer 主服务器类,负责初始化和管理TCP/WebSocket服务器。 ```java @Component public class NettyServer { // 启动TCP和WebSocket服务器 @PostConstruct public void start() { // 启动TCP服务器 CompletableFuture.runAsync(() -> startTcpServer()); // 启动WebSocket服务器 CompletableFuture.runAsync(() -> startWsServer()); // 启动服务器状态监控和心跳检测 // ... } // ... } ``` ### 服务器配置 (NettyServerConfig) 配置Netty服务器的各项参数,包括线程池、TCP参数等。 ```java @Configuration public class NettyServerConfig { // 创建TCP服务器引导程序 @Bean(name = "tcpServerBootstrap") public ServerBootstrap tcpBootstrap() { // 配置TCP服务器 // ... } // 创建WebSocket服务器引导程序 @Bean(name = "wsServerBootstrap") public ServerBootstrap wsBootstrap() { // 配置WebSocket服务器 // ... } // ... } ``` ### 通道初始化器 分别为TCP和WebSocket配置通道处理管道。 ```java @Component public class TcpServerInitializer extends ChannelInitializer { @Override protected void initChannel(SocketChannel ch) { // 配置TCP通道处理器 // ... } } @Component public class WebSocketServerInitializer extends ChannelInitializer { @Override protected void initChannel(SocketChannel ch) { // 配置WebSocket通道处理器 // ... } } ``` ## 使用方法 ### 环境要求 - JDK 21或更高版本 - Maven 3.8或更高版本 - Spring Boot 3.x ### 构建与运行 1. 克隆项目 ```bash git clone https://github.com/nehc/netty-server.git cd netty-server/server ``` 2. 使用Maven构建项目 ```bash mvn clean package ``` 3. 运行应用 ```bash java -jar target/nehc-netty-server.jar ``` ### 配置说明 主要配置位于`application.yml`文件中: ```yaml netty: server: tcp: port: 1883 # TCP服务器端口 so-backlog: 128 # 连接队列大小 ws: port: 8083 # WebSocket服务器端口 boss: thread-count: 1 # Boss线程数 worker: thread-count: 0 # Worker线程数(0表示使用默认值) heartbeat: interval: 30 # 心跳间隔(秒) ``` ## REST API接口 服务器提供了REST API接口用于监控和管理: - `GET /api/status` - 获取服务器状态 - `GET /api/clients` - 获取所有客户端连接 - `POST /api/broadcast` - 广播消息给所有客户端 - `POST /api/send/{clientId}` - 向指定客户端发送消息 - `DELETE /api/clients/{clientId}` - 断开指定客户端连接 ## 测试与调试 ### TCP客户端测试 可以使用项目自带的`TcpClient`类进行测试: ```java TcpClient client = new TcpClient("localhost", 1883); client.start(); client.sendMessage("Hello, NEHC Netty Server!"); ``` ### WebSocket客户端测试 可以使用浏览器WebSocket客户端或前端项目连接WebSocket服务器: ```javascript const ws = new WebSocket('ws://localhost:8083/ws'); ws.onopen = () => { console.log('Connected to WebSocket server'); ws.send('Hello from WebSocket client'); }; ``` ## 性能优化 服务器采用了多项性能优化措施: 1. **虚拟线程**:使用Java 21虚拟线程提高并发性能 2. **内存池**:使用Netty的PooledByteBufAllocator减少内存碎片 3. **零拷贝**:利用Netty的零拷贝功能减少数据复制 4. **异步处理**:充分利用异步编程模型提高吞吐量 5. **写缓冲区水位线**:优化Netty写缓冲区提高网络性能 ## 许可证 [MIT License](LICENSE)