|
|
@@ -1,12 +1,15 @@
|
|
|
+/*
|
|
|
package org.springblade.client.handler;
|
|
|
-
|
|
|
import java.io.IOException;
|
|
|
import java.util.Map;
|
|
|
-import java.util.Random;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.reflect.FieldUtils;
|
|
|
+import org.springblade.client.message.service.IMessageService;
|
|
|
+import org.springblade.client.message.service.impl.MessageServiceImpl;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.web.socket.*;
|
|
|
import org.springframework.web.socket.handler.AbstractWebSocketHandler;
|
|
|
@@ -14,18 +17,23 @@ import org.springframework.web.socket.sockjs.transport.session.WebSocketServerSo
|
|
|
@Slf4j
|
|
|
@Component
|
|
|
public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
-
|
|
|
- /**
|
|
|
+ @Autowired
|
|
|
+ private MessageServiceImpl messageService;
|
|
|
+ */
|
|
|
+/**
|
|
|
* 存储sessionId和webSocketSession
|
|
|
* 需要注意的是,webSocketSession没有提供无参构造,不能进行序列化,也就不能通过redis存储
|
|
|
* 在分布式系统中,要想别的办法实现webSocketSession共享
|
|
|
- */
|
|
|
+ *//*
|
|
|
+
|
|
|
private static Map<String, WebSocketSession> sessionMap = new ConcurrentHashMap<>();
|
|
|
private static Map<String, String> userMap = new ConcurrentHashMap<>();
|
|
|
|
|
|
- /**
|
|
|
+ */
|
|
|
+/**
|
|
|
* 获取sessionId
|
|
|
- */
|
|
|
+ *//*
|
|
|
+
|
|
|
private String getSessionId(WebSocketSession session) {
|
|
|
if (session instanceof WebSocketServerSockJsSession) {
|
|
|
// sock js 连接
|
|
|
@@ -38,23 +46,27 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
return session.getId();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
+ */
|
|
|
+/**
|
|
|
* webSocket连接创建后调用
|
|
|
- */
|
|
|
+ *//*
|
|
|
+
|
|
|
@Override
|
|
|
public void afterConnectionEstablished(WebSocketSession session) {
|
|
|
// 获取参数
|
|
|
- String user = String.valueOf(session.getAttributes().get("user"));
|
|
|
+ String userId = String.valueOf(session.getAttributes().get("user"));
|
|
|
String sessionId = getSessionId(session);
|
|
|
- userMap.put(user, getSessionId(session));
|
|
|
+ userMap.put(userId, getSessionId(session));
|
|
|
sessionMap.put(sessionId, session);
|
|
|
log.info("【当前socket链接人数】:==>"+sessionMap.size());
|
|
|
- send(user);
|
|
|
+ send(userId);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
+ */
|
|
|
+/**
|
|
|
* 接收到消息会调用
|
|
|
- */
|
|
|
+ *//*
|
|
|
+
|
|
|
@Override
|
|
|
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
|
|
|
if (message instanceof TextMessage) {
|
|
|
@@ -68,17 +80,21 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
+ */
|
|
|
+/**
|
|
|
* 连接出错会调用
|
|
|
- */
|
|
|
+ *//*
|
|
|
+
|
|
|
@Override
|
|
|
public void handleTransportError(WebSocketSession session, Throwable exception) {
|
|
|
sessionMap.remove(getSessionId(session));
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
+ */
|
|
|
+/**
|
|
|
* 连接关闭会调用
|
|
|
- */
|
|
|
+ *//*
|
|
|
+
|
|
|
@Override
|
|
|
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
|
|
|
sessionMap.remove(getSessionId(session));
|
|
|
@@ -89,9 +105,11 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
+ */
|
|
|
+/**
|
|
|
* 后端发送消息
|
|
|
- */
|
|
|
+ *//*
|
|
|
+
|
|
|
public void sendMessage(String user, String message) {
|
|
|
String sessionId = userMap.get(user);
|
|
|
WebSocketSession session = sessionMap.get(sessionId);
|
|
|
@@ -103,20 +121,15 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void send(String user)
|
|
|
+ public void send(String userId)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
while(true)
|
|
|
{
|
|
|
- int max=175;
|
|
|
- int min=10;
|
|
|
- Random random = new Random();
|
|
|
- int x = random.nextInt(max) % (max - min + 1) + min;
|
|
|
- int y = random.nextInt(max) % (max - min + 1) + min;
|
|
|
- String mark="["+x+","+y+"]";
|
|
|
- sendMessage(user,mark);
|
|
|
- Thread.sleep(6000);
|
|
|
+ Map<String, Object> userMessage = messageService.getUserMessage(Long.valueOf(userId));
|
|
|
+ sendMessage(userId,userMessage.toString());
|
|
|
+ Thread.sleep(30000);
|
|
|
}
|
|
|
}
|
|
|
catch (InterruptedException e)
|
|
|
@@ -125,3 +138,4 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+*/
|