|
@@ -12,25 +12,28 @@ import java.util.Map;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * @author dj
|
|
|
|
+ */
|
|
@Slf4j
|
|
@Slf4j
|
|
@ServerEndpoint("/websocket/{sid}")
|
|
@ServerEndpoint("/websocket/{sid}")
|
|
@Component
|
|
@Component
|
|
public class WebSocketServer {
|
|
public class WebSocketServer {
|
|
- private static final AtomicInteger onlineCount = new AtomicInteger();
|
|
|
|
- private static final ConcurrentHashMap<String, Session> sessionMap = new ConcurrentHashMap<>();
|
|
|
|
|
|
+ private static final AtomicInteger ONLINE_COUNT = new AtomicInteger();
|
|
|
|
+ private static final ConcurrentHashMap<String, Session> SESSION_MAP = new ConcurrentHashMap<>();
|
|
|
|
|
|
@OnOpen
|
|
@OnOpen
|
|
public void onOpen(Session session, @PathParam("sid") String sid) {
|
|
public void onOpen(Session session, @PathParam("sid") String sid) {
|
|
- sessionMap.put(sid, session);
|
|
|
|
- onlineCount.incrementAndGet();
|
|
|
|
- log.info("有新连接加入:{},当前在线人数为:{}", sid, onlineCount.get());
|
|
|
|
|
|
+ SESSION_MAP.put(sid, session);
|
|
|
|
+ ONLINE_COUNT.incrementAndGet();
|
|
|
|
+ log.info("有新连接加入:{},当前在线人数为:{}", sid, ONLINE_COUNT.get());
|
|
}
|
|
}
|
|
|
|
|
|
@OnClose
|
|
@OnClose
|
|
public void onClose(@PathParam("sid") String sid) {
|
|
public void onClose(@PathParam("sid") String sid) {
|
|
- sessionMap.remove(sid);
|
|
|
|
- onlineCount.decrementAndGet();
|
|
|
|
- log.info("有一连接关闭:{},当前在线人数为:{}", sid, onlineCount.get());
|
|
|
|
|
|
+ SESSION_MAP.remove(sid);
|
|
|
|
+ ONLINE_COUNT.decrementAndGet();
|
|
|
|
+ log.info("有一连接关闭:{},当前在线人数为:{}", sid, ONLINE_COUNT.get());
|
|
}
|
|
}
|
|
|
|
|
|
@OnMessage
|
|
@OnMessage
|
|
@@ -45,7 +48,7 @@ public class WebSocketServer {
|
|
}
|
|
}
|
|
|
|
|
|
public static int sendMessage(String sid, String message) {
|
|
public static int sendMessage(String sid, String message) {
|
|
- Session session = sessionMap.get(sid);
|
|
|
|
|
|
+ Session session = SESSION_MAP.get(sid);
|
|
if (null == session) {
|
|
if (null == session) {
|
|
return ExceptionEnum.NULL_POINTER.getCode();
|
|
return ExceptionEnum.NULL_POINTER.getCode();
|
|
}
|
|
}
|
|
@@ -60,7 +63,7 @@ public class WebSocketServer {
|
|
}
|
|
}
|
|
|
|
|
|
public static int sendFloorTriageMessage(String userCode, String message) {
|
|
public static int sendFloorTriageMessage(String userCode, String message) {
|
|
- for (Map.Entry<String, Session> entry : sessionMap.entrySet()) {
|
|
|
|
|
|
+ for (Map.Entry<String, Session> entry : SESSION_MAP.entrySet()) {
|
|
if (entry.getKey().startsWith(userCode) && entry.getKey().endsWith("triageFloorScreen")) {
|
|
if (entry.getKey().startsWith(userCode) && entry.getKey().endsWith("triageFloorScreen")) {
|
|
try {
|
|
try {
|
|
entry.getValue().getBasicRemote().sendText(message);
|
|
entry.getValue().getBasicRemote().sendText(message);
|
|
@@ -76,7 +79,7 @@ public class WebSocketServer {
|
|
}
|
|
}
|
|
|
|
|
|
public static int sendRoomTriageMessage(String roomCode, String message) {
|
|
public static int sendRoomTriageMessage(String roomCode, String message) {
|
|
- Session session = sessionMap.get(roomCode + "-triageRoomScreen");
|
|
|
|
|
|
+ Session session = SESSION_MAP.get(roomCode + "-triageRoomScreen");
|
|
if (null == session) {
|
|
if (null == session) {
|
|
return ExceptionEnum.NULL_POINTER.getCode();
|
|
return ExceptionEnum.NULL_POINTER.getCode();
|
|
}
|
|
}
|
|
@@ -91,7 +94,7 @@ public class WebSocketServer {
|
|
}
|
|
}
|
|
|
|
|
|
public static void sendMessageByUserCode(String code, String message) {
|
|
public static void sendMessageByUserCode(String code, String message) {
|
|
- for (Map.Entry<String, Session> entry : sessionMap.entrySet()) {
|
|
|
|
|
|
+ for (Map.Entry<String, Session> entry : SESSION_MAP.entrySet()) {
|
|
if (entry.getKey().startsWith(code)) {
|
|
if (entry.getKey().startsWith(code)) {
|
|
try {
|
|
try {
|
|
entry.getValue().getBasicRemote().sendText(message);
|
|
entry.getValue().getBasicRemote().sendText(message);
|
|
@@ -105,7 +108,7 @@ public class WebSocketServer {
|
|
}
|
|
}
|
|
|
|
|
|
public static void sendMessageToAll(String message) {
|
|
public static void sendMessageToAll(String message) {
|
|
- for (Session session : sessionMap.values()) {
|
|
|
|
|
|
+ for (Session session : SESSION_MAP.values()) {
|
|
try {
|
|
try {
|
|
session.getBasicRemote().sendText(message);
|
|
session.getBasicRemote().sendText(message);
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
@@ -116,6 +119,6 @@ public class WebSocketServer {
|
|
}
|
|
}
|
|
|
|
|
|
public static int getOnlineCount() {
|
|
public static int getOnlineCount() {
|
|
- return onlineCount.get();
|
|
|
|
|
|
+ return ONLINE_COUNT.get();
|
|
}
|
|
}
|
|
}
|
|
}
|