# websocket-root **Repository Path**: yangxsa/websocket-root ## Basic Information - **Project Name**: websocket-root - **Description**: 基于Tio的websocket server - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-04-16 - **Last Updated**: 2026-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # websocket-root 基于 Tio 框架开发的 WebSocket 服务端项目,支持定时推送和普通消息推送。 ## 项目简介 websocket-root 是一个基于 Spring Boot 和 Tio WebSocket 框架构建的 WebSocket 服务器,实现了定时推送和普通推送功能。客户端可使用 JavaScript 原生 WebSocket API 进行连接通信。 ## 技术栈 - **Spring Boot** - 应用框架 - **Tio WebSocket** - WebSocket 服务端框架 - **Java** - 开发语言 ## 核心功能 ### 1. 普通消息推送 客户端连接到 WebSocket 服务器后,可以接收服务端推送的普通文本消息。 ### 2. 定时推送 支持为每个客户端配置定时任务,根据设定的时间间隔主动推送消息。 ### 3. 心跳检测 内置心跳机制,保证连接的有效性。 ### 4. 消息处理 - 支持文本消息处理 - 支持字节消息处理 - 支持 JSON 格式消息 ## 快速开始 ### 服务配置 在 `src/main/java/com/yaa/root/websocket/comm/ServerConfig.java` 中配置服务器参数: ```java public abstract class ServerConfig { public static final String CHARSET = "UTF-8"; public static final String HEART_BEAT = "{\"heartbeat\":\"pong\"}"; public static final String SERVER_IP = "0.0.0.0"; public static final int SERVER_PORT = 9326; public static final int HEARTBEAT_TIMEOUT = 60000; // 60秒超时 } ``` ### 客户端连接示例 ```javascript var ws = new WebSocket("ws://192.168.0.169:9326"); ws.onopen = function (event) { console.log("连接成功", event); }; ws.onmessage = function (event) { console.log("收到消息:" + event.data); }; ws.onclose = function (event) { console.log("连接关闭", event); }; ws.onerror = function (event, e) { console.log("错误:", event.data); }; ``` ### 消息格式 客户端发送的消息需要包含 channel 字段: ```json { "channel": "timer" // 或 "gene" 表示普通消息 } ``` ## 项目结构 ``` src/main/java/com/yaa/root/websocket/ ├── Application.java # Spring Boot 启动类 ├── bean/ │ └── ChannelReq.java # 频道请求实体 ├── comm/ │ ├── Const.java # 常量定义 │ └── ServerConfig.java # 服务器配置 ├── controller/ │ └── RouteController.java # 路由控制器 ├── handler/ │ ├── AbsServerHandler.java # 抽象处理器 │ ├── GenReqHandler.java # 普通消息处理器 │ ├── ServerHandler.java # 主处理器 │ └── TimerReqHandler.java # 定时消息处理器 ├── linstener/ │ ├── ServerIpStatListener.java # IP统计监听器 │ └── ServerListener.java # 服务器监听器 ├── processor/ │ └── ServerProcessor.java # 消息处理器抽象类 ├── starter/ │ └── SocketServer.java # WebSocket 服务启动类 └── util/ └── WsResultUtil.java # 响应构建工具 ``` ## 运行项目 ```bash # 使用 Maven 构建并运行 ./mvnw spring-boot:run # 或先打包再运行 ./mvnw clean package java -jar target/websocket-root.jar ``` ## 消息处理机制 1. **ServerHandler** - 主消息处理器,根据 channel 类型分发到不同的处理器 2. **GenReqHandler** - 处理普通消息推送 3. **TimerReqHandler** - 处理定时推送任务,为每个连接创建独立的定时线程 ## 注意事项 - 确保服务器端口 9326 已开放 - 客户端连接时需要携带正确的 JSON 消息格式 - 定时推送任务会在客户端断开连接时自动停止