package org.example; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; @javax.websocket.server.ServerEndpoint("/ws") public class WsServer { private static final Set sessions = new CopyOnWriteArraySet<>(); @javax.websocket.OnOpen public void onOpen(javax.websocket.Session session) { sessions.add(session); System.out.println("WebSocket连接已建立: " + session.getId()); // 推送扫码枪列表给前端 String deviceListJson = org.example.Main.getDeviceListJson(); try { System.out.println("发送消息到前端"); session.getBasicRemote().sendText(deviceListJson); } catch (IOException e) { e.printStackTrace(); } } @javax.websocket.OnMessage public void onMessage(String message, javax.websocket.Session session) throws IOException { System.out.println("收到消息: " + message); session.getBasicRemote().sendText("服务器已收到: " + message); } @javax.websocket.OnClose public void onClose(javax.websocket.Session session) { sessions.remove(session); System.out.println("WebSocket连接已关闭: " + session.getId()); } public static void broadcast(String message) { for (javax.websocket.Session session : sessions) { if (session.isOpen()) { try { session.getBasicRemote().sendText(message); } catch (IOException e) { e.printStackTrace(); } } } } }