1:继承接口实现websocket(这样的写法,任何的路径都可以连接过来,如果使用@ServerEndpoint这样的方式的话,就是现在匹配的路径才可)
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);}@PreDestroypublic void destroy() throws IOException, InterruptedException {super.stop();System.out.println("WebSocket 服务已关闭");}@Overridepublic void onOpen(WebSocket conn, ClientHandshake handshake) {System.out.println("客户端已连接");}@Overridepublic void onClose(WebSocket conn, int code, String reason, boolean remote) {System.out.println("客户端已断开");}@Overridepublic void onMessage(WebSocket conn, String message) {System.out.println("收到消息: " + message);try {Thread.sleep(2000);conn.send("hi,客户端"); } catch (InterruptedException e) {e.printStackTrace();}}@Overridepublic void onError(WebSocket conn, Exception ex) {if (ex instanceof BindException) {System.err.println("端口占用,请检查配置");} else {ex.printStackTrace();}}@Overridepublic void onStart() {System.out.println("WebSocket 服务初始化完成");}}
2:pom.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>