|
|
@ -6,6 +6,7 @@ import com.baiye.constant.DefaultNumberConstants;
|
|
|
|
import com.baiye.http.WebSocketResponse;
|
|
|
|
import com.baiye.http.WebSocketResponse;
|
|
|
|
import com.baiye.manager.UserTokenManager;
|
|
|
|
import com.baiye.manager.UserTokenManager;
|
|
|
|
import com.baiye.model.dto.SendWebSocketDTO;
|
|
|
|
import com.baiye.model.dto.SendWebSocketDTO;
|
|
|
|
|
|
|
|
import com.baiye.model.enums.ResponseCode;
|
|
|
|
import com.baiye.model.enums.WebSocketEnums;
|
|
|
|
import com.baiye.model.enums.WebSocketEnums;
|
|
|
|
import com.baiye.modules.system.service.MessageNotificationService;
|
|
|
|
import com.baiye.modules.system.service.MessageNotificationService;
|
|
|
|
import com.baiye.modules.system.service.UserMessageService;
|
|
|
|
import com.baiye.modules.system.service.UserMessageService;
|
|
|
@ -40,6 +41,7 @@ public class WebSocketServer {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static final AtomicInteger ONLINE_COUNT = new AtomicInteger(0);
|
|
|
|
private static final AtomicInteger ONLINE_COUNT = new AtomicInteger(0);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* concurrent包的线程安全Set,用来存放每个客户端对应的Session对象。
|
|
|
|
* concurrent包的线程安全Set,用来存放每个客户端对应的Session对象。
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -69,10 +71,16 @@ public class WebSocketServer {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@OnClose
|
|
|
|
@OnClose
|
|
|
|
public void onClose(Session session) {
|
|
|
|
public void onClose(Session session) {
|
|
|
|
if (onlineId != null) {
|
|
|
|
Long userId = getUserId(session);
|
|
|
|
SESSIONS.remove(onlineId);
|
|
|
|
try {
|
|
|
|
|
|
|
|
if (userId != null) {
|
|
|
|
|
|
|
|
SESSIONS.remove(userId);
|
|
|
|
int cnt = ONLINE_COUNT.decrementAndGet();
|
|
|
|
int cnt = ONLINE_COUNT.decrementAndGet();
|
|
|
|
log.info("有连接关闭,当前连接数为:{}", cnt);
|
|
|
|
session.close();
|
|
|
|
|
|
|
|
log.info("有连接关闭,关闭id为{},当前连接数为:{}", userId, cnt);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
|
|
throw new RuntimeException("关闭失败");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -83,7 +91,6 @@ public class WebSocketServer {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@OnMessage
|
|
|
|
@OnMessage
|
|
|
|
public void onMessage(String message, Session session) {
|
|
|
|
public void onMessage(String message, Session session) {
|
|
|
|
log.info("来自客户端的消息:{}", message);
|
|
|
|
|
|
|
|
JSONObject jsonObject = JSONUtil.parseObj(message);
|
|
|
|
JSONObject jsonObject = JSONUtil.parseObj(message);
|
|
|
|
String type = "type";
|
|
|
|
String type = "type";
|
|
|
|
UserMessageService userMessageService =
|
|
|
|
UserMessageService userMessageService =
|
|
|
@ -144,6 +151,15 @@ public class WebSocketServer {
|
|
|
|
(jsonObject.getStr(type))));
|
|
|
|
(jsonObject.getStr(type))));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DefaultNumberConstants.SIX_NUMBER:
|
|
|
|
|
|
|
|
userId = getUserId(session);
|
|
|
|
|
|
|
|
if (userId != null) {
|
|
|
|
|
|
|
|
sendMessage(session, JSONUtil.toJsonStr
|
|
|
|
|
|
|
|
(WebSocketResponse.createBySuccess
|
|
|
|
|
|
|
|
(jsonObject.getStr(type),
|
|
|
|
|
|
|
|
ResponseCode.CONNECTION_SUCCEEDED)));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -203,8 +219,9 @@ public class WebSocketServer {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (session != null) {
|
|
|
|
if (session != null) {
|
|
|
|
sendMessage(session, message);
|
|
|
|
sendMessage(session, message);
|
|
|
|
|
|
|
|
log.info("=============== 发送消息成功 ===============");
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
log.warn("没有找到你指定ID的会话:{}", sessionId);
|
|
|
|
log.error("发送消息失败:{}", sessionId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -225,7 +242,7 @@ public class WebSocketServer {
|
|
|
|
data.setCode(DefaultNumberConstants.TWO_HUNDRED);
|
|
|
|
data.setCode(DefaultNumberConstants.TWO_HUNDRED);
|
|
|
|
session.getBasicRemote().sendText(JSONUtil.toJsonStr(data));
|
|
|
|
session.getBasicRemote().sendText(JSONUtil.toJsonStr(data));
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
log.warn("没有找到你指定ID的会话:{}", id);
|
|
|
|
log.error("没有找到你指定ID的会话:{}", id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -238,7 +255,7 @@ public class WebSocketServer {
|
|
|
|
session.getBasicRemote().sendText(JSONUtil.toJsonStr
|
|
|
|
session.getBasicRemote().sendText(JSONUtil.toJsonStr
|
|
|
|
(WebSocketResponse.createBySuccess("userMessage", hashMap.get(id))));
|
|
|
|
(WebSocketResponse.createBySuccess("userMessage", hashMap.get(id))));
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
log.warn("没有找到你指定ID的会话:{}", id);
|
|
|
|
log.error("没有找到你指定ID的会话:{}", id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (IOException e) {
|
|
|
|
} catch (IOException e) {
|
|
|
|