|
|
@@ -2,6 +2,7 @@ package org.springblade.client.message.handler;
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.reflect.FieldUtils;
|
|
|
+import org.springblade.client.dto.UnReadDTO;
|
|
|
import org.springblade.client.message.service.impl.MessageServiceImpl;
|
|
|
import org.springblade.core.tool.utils.SpringUtil;
|
|
|
import org.springblade.system.feign.IApiScopeClient;
|
|
|
@@ -49,11 +50,19 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
@Override
|
|
|
public void afterConnectionEstablished(WebSocketSession session)
|
|
|
{
|
|
|
+
|
|
|
// 获取参数
|
|
|
String userId = String.valueOf(session.getAttributes().get("user"));
|
|
|
+
|
|
|
+ //当前用户已开启socket的话, 就不需要再次开启了
|
|
|
+ if(userMap.containsKey(userId))
|
|
|
+ {
|
|
|
+ log.info("【当前用户userId】:==>"+userId+",已经开启socket通道,不再开辟新通道");
|
|
|
+ return;
|
|
|
+ }
|
|
|
String sessionId = getSessionId(session);
|
|
|
userMap.put(userId, getSessionId(session));
|
|
|
- sessionMap.put(sessionId, session);
|
|
|
+ sessionMap.put(userId, session);
|
|
|
log.info("【当前socket在线人数】:==>"+userMap.size());
|
|
|
log.info("【当前socket连接数】:==>"+sessionMap.size());
|
|
|
send(userId);
|
|
|
@@ -99,12 +108,12 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
/**
|
|
|
* 后端发送消息
|
|
|
*/
|
|
|
- public void sendMessage(String user, String message) {
|
|
|
+ public void sendMessage(String user, UnReadDTO unReadDTO) {
|
|
|
String sessionId = userMap.get(user);
|
|
|
- WebSocketSession session = sessionMap.get(sessionId);
|
|
|
+ WebSocketSession session = sessionMap.get(user);
|
|
|
try {
|
|
|
- log.info("【websocket消息】 单点消息:"+message);
|
|
|
- session.sendMessage(new TextMessage(message));
|
|
|
+ log.info("【websocket消息】 单点消息:"+unReadDTO.toString());
|
|
|
+ session.sendMessage(new TextMessage(unReadDTO.toString()));
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
@@ -117,8 +126,8 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
while(true)
|
|
|
{
|
|
|
MessageServiceImpl messageService = SpringUtil.getBean(MessageServiceImpl.class);
|
|
|
- Map<String, Object> userMessage = messageService.getUserMessage(Long.valueOf(userId));
|
|
|
- sendMessage(userId,userMessage.toString());
|
|
|
+ UnReadDTO unReadDTO = messageService.getUserMessage(Long.valueOf(userId));
|
|
|
+ sendMessage(userId,unReadDTO);
|
|
|
Thread.sleep(60000);
|
|
|
}
|
|
|
}
|