继承接口实现websocke,实现任意路径链接

1:继承接口实现websocket(这样的写法,任何的路径都可以连接过来,如果使用@ServerEndpoint这样的方式的话,就是现在匹配的路径才可)

java 复制代码
package com.demo.websocket;

import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.io.IOException;
import java.net.BindException;
import java.net.InetSocketAddress;

@Component
public class CustomWebSocketServer extends WebSocketServer {

    private static int port = 7788;

    public CustomWebSocketServer() {
        super(new InetSocketAddress(port));
        super.start();
        System.out.println("WebSocket 服务已启动,端口:" + port);
    }

    @PreDestroy
    public void destroy() throws IOException, InterruptedException {
        super.stop();
        System.out.println("WebSocket 服务已关闭");
    }

    @Override
    public void onOpen(WebSocket conn, ClientHandshake handshake) {
        System.out.println("客户端已连接");
    }

    @Override
    public void onClose(WebSocket conn, int code, String reason, boolean remote) {
        System.out.println("客户端已断开");
    }

    @Override
    public void onMessage(WebSocket conn, String message) {
        System.out.println("收到消息: " + message);
        try {
            Thread.sleep(2000);
            conn.send("hi,客户端"); // 回声测试
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onError(WebSocket conn, Exception ex) {
        if (ex instanceof BindException) {
            System.err.println("端口占用,请检查配置");
        } else {
            ex.printStackTrace();
        }
    }

    @Override
    public void onStart() {
        System.out.println("WebSocket 服务初始化完成");
    }

}

2:pom.xml配置

xml 复制代码
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.java-websocket</groupId>
            <artifactId>Java-WebSocket</artifactId>
            <version>1.5.1</version> 
        </dependency>
    </dependencies>