63 lines
2.2 KiB
Java
63 lines
2.2 KiB
Java
package com.rax.vital.handler;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.rax.vital.medicine.service.ChatService;
|
|
import com.rax.vital.util.GetHttpParamUtil;
|
|
import jakarta.annotation.Resource;
|
|
import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
|
|
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
|
|
import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
|
|
import org.springframework.web.socket.CloseStatus;
|
|
import org.springframework.web.socket.WebSocketHandler;
|
|
import org.springframework.web.socket.WebSocketMessage;
|
|
import org.springframework.web.socket.WebSocketSession;
|
|
|
|
import java.net.URLDecoder;
|
|
import java.util.Map;
|
|
|
|
public class ChatHandler implements WebSocketHandler {
|
|
@Resource
|
|
private OAuth2AuthorizationService authorizationService;
|
|
|
|
@Resource
|
|
private ChatService chatService;
|
|
|
|
@Override
|
|
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
|
|
}
|
|
|
|
@Override
|
|
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
|
|
String decode = URLDecoder.decode(session.getUri().getQuery());
|
|
Map params = GetHttpParamUtil.getParams(decode);
|
|
String token = (String) params.get("token");
|
|
OAuth2Authorization authorization = authorizationService.findByToken(token, OAuth2TokenType.ACCESS_TOKEN);
|
|
if (authorization != null) {
|
|
String username = authorization.getPrincipalName();
|
|
|
|
String payload = (String) message.getPayload();
|
|
JSONObject jsonObject = JSONObject.parseObject(payload);
|
|
String patientName = jsonObject.getString("patientName");
|
|
String idNum = jsonObject.getString("idNum");
|
|
String date = jsonObject.getString("date");
|
|
// 消息内容
|
|
String msg = jsonObject.getString("msg");
|
|
chatService.sendMessage(username, patientName, idNum, date, session, msg);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
|
|
}
|
|
|
|
@Override
|
|
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
|
|
chatService.stopTask(session.getId());
|
|
}
|
|
|
|
@Override
|
|
public boolean supportsPartialMessages() {
|
|
return false;
|
|
}
|
|
}
|