//package com.huatek.busi.websocket;
//
//import com.google.common.collect.Maps;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Component;
//
//import javax.websocket.*;
//import javax.websocket.server.PathParam;
//import javax.websocket.server.ServerEndpoint;
//import java.util.Map;
//import java.util.concurrent.CopyOnWriteArraySet;
//
//@Slf4j
//@Component
//@ServerEndpoint("/websocket/{userId}")
//public class WebSocket {
//
//    /**
//     * 与某个客户端的连接会话，需要通过它来给客户端发送数据
//     */
//    private Session session;
//    /**
//     * concurrent包的线程安全Set，用来存放每个客户端对应的MyWebSocket对象。
//     */
//    private static CopyOnWriteArraySet<WebSocket> webSockets =new CopyOnWriteArraySet<>();
//    private static Map<String, Session> sessionPool = Maps.newLinkedHashMap();
//    private String userId;
//
//    @OnOpen
//    public void onOpen(Session session, @PathParam("userId") String userId) {
//        this.session = session;
//        this.userId = userId;
//        webSockets.add(this);
//        sessionPool.put(userId, session);
//
//        log.info("<<<<<<<<<<<<<websocket已建立连接>>>>>>>>>>>>>>>>>");
//
//        // 发送消息
//        sendOneMessage(userId);
//    }
//
//    @OnClose
//    public void onClose() {
//        webSockets.remove(this);
//        log.info("【websocket消息】连接断开，总数为:" + webSockets.size());
//    }
//
//    @OnMessage
//    public void onMessage(String message) {
//        log.info("【websocket消息】收到客户端消息:" + message);
//    }
//
//    @OnError
//    public void onError(Session session, Throwable error){
//        log.error("用户userId为：{}的连接发送错误", error.getMessage());
//    }
//
//    public void sendOneMessage(String userId) {
//        Session session = sessionPool.get(userId);
//        if (session != null) {
//            try {
//                String message = "";
//                session.getAsyncRemote().sendText(message);
//            } catch (Exception e) {
//                log.error("【websocket消息】发送异常:" + e.getMessage());
//            }
//        }
//    }
//}
