石墨消解仪后端服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.5 KiB

3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
  1. package com.iflytop.gd.app.config;
  2. import jakarta.websocket.*;
  3. import jakarta.websocket.server.ServerEndpoint;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.stereotype.Component;
  6. import java.util.Collections;
  7. import java.util.HashSet;
  8. import java.util.Set;
  9. @Slf4j
  10. @ServerEndpoint("/ws")
  11. @Component
  12. public class WebSocketServer {
  13. private static final Set<Session> sessions = Collections.synchronizedSet(new HashSet<>());
  14. public static void sendMessageToClients(String message) {
  15. synchronized (sessions) {
  16. for (Session session : sessions) {
  17. try {
  18. session.getBasicRemote().sendText(message);
  19. } catch (Exception e) {
  20. log.error("发送给客户端失败 sessionId={}", session.getId(), e);
  21. }
  22. }
  23. }
  24. }
  25. @OnOpen
  26. public void onOpen(Session session) {
  27. sessions.add(session);
  28. log.info("新连接加入,sessionId={}", session.getId());
  29. }
  30. @OnMessage
  31. public void onMessage(String message, Session session) {
  32. // log.info("收到消息 sessionId={},内容:{}", session.getId(), message);
  33. }
  34. @OnClose
  35. public void onClose(Session session) {
  36. sessions.remove(session);
  37. log.info("连接已关闭,sessionId={}", session.getId());
  38. }
  39. @OnError
  40. public void onError(Session session, Throwable error) {
  41. log.error("发生错误,sessionId={}", session.getId(), error);
  42. }
  43. }