WebsocketManagerUtil.java 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package com.huimv.wine.utils;
  2. import com.alibaba.fastjson.JSON;
  3. import com.huimv.wine.entity.vo.WsEvent;
  4. import javax.websocket.RemoteEndpoint;
  5. import javax.websocket.Session;
  6. import java.util.Map;
  7. import java.util.concurrent.ConcurrentHashMap;
  8. public class WebsocketManagerUtil {
  9. /**
  10. * 记录当前在线的Session
  11. */
  12. private static final Map<String, Session> SESSIONS = new ConcurrentHashMap<>();
  13. public static Map<String, Session> getSessions() {
  14. return SESSIONS;
  15. }
  16. /**
  17. * 添加session
  18. * @param userId
  19. * @param session
  20. */
  21. public static void addSession(String userId, Session session){
  22. // 此处只允许一个用户的session链接。一个用户的多个连接,我们视为无效。
  23. SESSIONS.putIfAbsent ( userId, session );
  24. }
  25. /**
  26. * 关闭session
  27. * @param userId
  28. */
  29. public static void removeSession(String userId){
  30. SESSIONS.remove ( userId );
  31. }
  32. public static void sendMessage(Session session, WsEvent wsEvent){
  33. if(session == null){
  34. return;
  35. }
  36. // 同步
  37. RemoteEndpoint.Async async = session.getAsyncRemote ();
  38. System.out.println(wsEvent);
  39. async.sendText (JSON.toJSONString(wsEvent));
  40. }
  41. }