package com.dji.sample.component.websocket.config;
|
|
import com.dji.sample.component.websocket.service.IWebSocketManageService;
|
import com.dji.sdk.websocket.WebSocketDefaultHandler;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.util.StringUtils;
|
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.security.Principal;
|
|
/**
|
*
|
* @author sean.zhou
|
* @date 2021/11/16
|
* @version 0.1
|
*/
|
@Slf4j
|
public class MyWebSocketHandler extends WebSocketDefaultHandler {
|
|
private IWebSocketManageService webSocketManageService;
|
|
MyWebSocketHandler(WebSocketHandler delegate, IWebSocketManageService webSocketManageService) {
|
super(delegate);
|
this.webSocketManageService = webSocketManageService;
|
}
|
|
@Override
|
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
|
Principal principal = session.getPrincipal();
|
if (StringUtils.hasText(principal.getName())) {
|
webSocketManageService.put(principal.getName(), new MyConcurrentWebSocketSession(session));
|
log.debug("{} is connected. ID: {}. WebSocketSession[current count: {}]",
|
principal.getName(), session.getId(), webSocketManageService.getConnectedCount());
|
return;
|
}
|
session.close();
|
}
|
|
@Override
|
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
|
Principal principal = session.getPrincipal();
|
if (StringUtils.hasText(principal.getName())) {
|
webSocketManageService.remove(principal.getName(), session.getId());
|
log.debug("{} is disconnected. ID: {}. WebSocketSession[current count: {}]",
|
principal.getName(), session.getId(), webSocketManageService.getConnectedCount());
|
}
|
|
}
|
|
@Override
|
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
|
log.debug("received message: {}", message.getPayload());
|
}
|
|
}
|