该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
package com.ruoyi.web.core;
/**
* @ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端,
* 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端
*/
@ServerEndpoint("/websocket/{fromUser}")
@Component
public class WebSocket {
private static final Logger log = LoggerFactory.getLogger(WebSocket.class);
// @Autowired
// private IQywxAccessTokenService qywxAccessTokenService;
private static IQywxAccessTokenService qywxAccessTokenService;
private static IWxTalkingInfoService wxTalkingInfoService;
//静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
private static int onlineCount = 0;
//concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
// private static CopyOnWriteArraySet webSocketSet = new CopyOnWriteArraySet();
private static ConcurrentHashMap webSocketSetMap = new ConcurrentHashMap<>();
//与某个客户端的连接会话,需要通过它来给客户端发送数据
// private Session session;
// 毫秒转换单位
final static int SECOND = 1000;
// 注入的时候,给类的 service 注入
@Autowired
public void setChatService(IQywxAccessTokenService qywxAccessTokenService) {
W