|
@@ -0,0 +1,90 @@
|
|
|
+package com.ym.mec.teacher.handler;
|
|
|
+
|
|
|
+import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
+import com.ym.mec.auth.api.entity.SysUser;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.http.HttpStatus;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.socket.*;
|
|
|
+import org.springframework.web.socket.handler.AbstractWebSocketHandler;
|
|
|
+
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.concurrent.ConcurrentHashMap;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Author Joburgess
|
|
|
+ * @Date 2021/6/9 0009
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class SoundHandler extends AbstractWebSocketHandler {
|
|
|
+
|
|
|
+ private static final Logger LOGGER = LoggerFactory.getLogger(SoundHandler.class);
|
|
|
+
|
|
|
+ private final Map<String, WebSocketSession> clients = new ConcurrentHashMap<>();
|
|
|
+ @Autowired
|
|
|
+ private SysUserFeignService sysUserFeignService;
|
|
|
+
|
|
|
+ public SoundHandler() {
|
|
|
+ super();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterConnectionEstablished(WebSocketSession session) throws Exception {
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
+ if(Objects.isNull(sysUser)){
|
|
|
+ LOGGER.error("用户登录信息异常");
|
|
|
+ }
|
|
|
+ LOGGER.info("有新的客户端上线: {}", sysUser.getRealName());
|
|
|
+ super.afterConnectionEstablished(session);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
+ if(Objects.isNull(sysUser)){
|
|
|
+ LOGGER.error("用户登录信息异常");
|
|
|
+ }
|
|
|
+ LOGGER.info("{}: {}", sysUser.getRealName(), message);
|
|
|
+ super.handleMessage(session, message);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
|
|
|
+ super.handleTextMessage(session, message);
|
|
|
+ session.sendMessage(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception {
|
|
|
+ super.handleBinaryMessage(session, message);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void handlePongMessage(WebSocketSession session, PongMessage message) throws Exception {
|
|
|
+ super.handlePongMessage(session, message);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
|
|
|
+ super.handleTransportError(session, exception);
|
|
|
+ LOGGER.info("发生了错误,移除客户端: {}", session.getId());
|
|
|
+ session.close();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
|
|
|
+ super.afterConnectionClosed(session, status);
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
+ if(Objects.isNull(sysUser)){
|
|
|
+ LOGGER.error("用户登录信息异常");
|
|
|
+ }
|
|
|
+ LOGGER.info("{}离线", sysUser.getRealName());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean supportsPartialMessages() {
|
|
|
+ return super.supportsPartialMessages();
|
|
|
+ }
|
|
|
+}
|