package com.matrix.component.websoket; import cn.hutool.crypto.SecureUtil; import net.sf.json.JSONObject; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import java.util.HashMap; import java.util.Map; /** * 扫码登录soket处理类 * @author jyy */ public class WebSoketScanQrCodeLoginObserver implements WebSoketMessageObserver { private static Map scanCash=new HashMap<>(); @Override public void userConnection(WebSocketSession session) { } @Override public void handleTextMessage(WebSocketSession session, TextMessage message) { ScanQrCodeLoginDto commonMessage = (ScanQrCodeLoginDto) JSONObject.toBean(JSONObject.fromObject(message.getPayload()), ScanQrCodeLoginDto.class); if(ScanQrCodeLoginDto.MSG_TYPE_LOGIN.equals(commonMessage.getMsgType())){ //todo 添加安全校验代码 scanCash.put(SecureUtil.md5(commonMessage.getLoginQrCodeKey()),commonMessage.getAppUserId()); JSONObject jsonObject=new JSONObject(); jsonObject.put("loginOperation",commonMessage.getLoginOperation()); jsonObject.put("msgType",commonMessage.getMsgType()); WebSocketPushHandler.sendMessageToUser(commonMessage.getWebClientId(), new TextMessage(jsonObject.toString())); }else if(ScanQrCodeLoginDto.MSG_TYPE_SCAN.equals(commonMessage.getMsgType())){ JSONObject jsonObject=new JSONObject(); jsonObject.put("msgType",commonMessage.getMsgType()); WebSocketPushHandler.sendMessageToUser(commonMessage.getWebClientId(), new TextMessage(jsonObject.toString())); } } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) { } /** * 获取扫码的用户id * @param webClientId * @return */ public static Long getScanCashValue(String webClientId){ return scanCash.remove(SecureUtil.md5(webClientId)); } }