Browse Source

单点登陆

xiaochan 3 years ago
parent
commit
fa4016cf88

+ 0 - 7
src/main/java/thyyxxk/webserver/dao/his/scheduled/JieShouFeiYongDao.java

@@ -20,11 +20,4 @@ public interface JieShouFeiYongDao {
             "       where a.inpatient_no = b.inpatient_no and a.admiss_times = b.admiss_times) " +
             "from zy_actpatient a ")
     List<Patient> xuYaoJieShouFeiYong();
-
-
-
-
-
-    @Select("exec [dbo].[zy_receive_auto]")
-    String jieShouYaoPing();
 }

+ 25 - 0
src/main/java/thyyxxk/webserver/websocket/WebSocketServer.java

@@ -1,5 +1,7 @@
 package thyyxxk.webserver.websocket;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
@@ -10,6 +12,7 @@ import javax.websocket.server.ServerEndpoint;
 import java.io.IOException;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -24,6 +27,11 @@ public class WebSocketServer {
 
     @OnOpen
     public void onOpen(Session session, @PathParam("sid") String sid) {
+        SESSION_MAP.forEach((item, index) -> {
+            if (sid.split("-")[0].equals(item.split("-")[0])) {
+                sendMessageByWebSocketSidSingle(item);
+            }
+        });
         SESSION_MAP.put(sid, session);
         ONLINE_COUNT.incrementAndGet();
         log.info("有新连接加入:{},当前在线人数为:{}", sid, ONLINE_COUNT.get());
@@ -102,6 +110,23 @@ public class WebSocketServer {
         }
     }
 
+    /**
+     * 单个登陆不能有多个账号同时登陆
+     *
+     * @param sid 被挤掉的连接
+     */
+    public static void sendMessageByWebSocketSidSingle(String sid) {
+        JSONObject obj = new JSONObject();
+        obj.put("name", "sidSingle");
+        try {
+            SESSION_MAP.get(sid).getBasicRemote().sendText(obj.toString());
+        } catch (IOException e) {
+            e.printStackTrace();
+            log.error("【sid: " + sid + "】Socket根据单点登陆错误", e);
+        }
+
+    }
+
     public static void sendMessageToAll(String message) {
         for (Session session : SESSION_MAP.values()) {
             try {