Skip to content

fine-socket模块

  • web-socket全双工通信配置

依赖

  • pom.xml
xml
<!--fine-socket-->
<dependency>
    <groupId>cn.finemap</groupId>
    <artifactId>fine-socket</artifactId>
    <version>${fine.version}</version>
</dependency>

创建子模块:fine-socket

  • 在fine-parent中创建:fine-socket子模块

fine-socket

  • 创建子模块:New > Module...
  • 添加公共组件的依赖
  • 维护工具类
依赖
  • fine-socket/pom.xml
xml
<!-- 依赖 -->
 <dependencies>
    <!--websocket-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-websocket</artifactId>
    </dependency>
</dependencies>
WebSocket配置
  • cn.finemap.socket.WebSocketConfig.java
java
@Configuration
@EnableWebSocket
public class WebSocketConfig {

    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }

}

维护父工程:fine-parent

fine-parent

  • 添加该子模块

fine-socket使用

创建WebSocket接口

创建WebSocket接口

java
@Slf4j
@Component
@ServerEndpoint("/WSController")
public class WSController {

    // 集合
    private static Set<Session> sessions = Collections.synchronizedSet(new HashSet<>());

    @OnOpen
    public void onOpen(Session session){
        try {
            // 添加到集合中
            sessions.add(session);
            session.getBasicRemote().sendText("初始化发生广播");
        } catch (Exception e) {
            log.error("初始创建及发生广播失败: " + e.getMessage());
        }
    }

    @OnClose
    public void onClose(Session session) {
        sessions.remove(session);
    }

    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("收到消息:" + message);
        try {
            session.getBasicRemote().sendText("回复");
        } catch (IOException e) {
            log.error("回复广播失败:" + e.getMessage());
        }
    }

    /**
     * 发生消息
     */
    public static void send() {
        //session.getBasicRemote().sendText("发生广播");
    }

    @OnError
    public void onError(Session session, Throwable throwable) {
        // 错误处理逻辑
        log.error("WebSocket错误: " + throwable.getMessage());
    }
}