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;@Componentpublic 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配置
<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>