Advertisement
uopspop

Untitled

Feb 2nd, 2017
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.54 KB | None | 0 0
  1.     /** * Remove User from Room * @param inbound */
  2.     public static void removeUserinroom(String aRoomID,WebSocket conn) {
  3.         // 把離開的邏輯坐在這裡
  4.         // 1. 若是Client離開 -> 則把所有人都踢出此room
  5.         // 2. 若是Agent離開 && 剩餘人數 > 1 -> 自己退出就好
  6.         // 3. 若是Agent離開 && 剩餘人數 == 1 -> 則把所有人都踢出此room
  7.         System.out.println("removeUserinroom(String room,WebSocket conn) called");
  8.         Map<WebSocket, RoomInfo> roommap = roomuserconnections.get(aRoomID);
  9. //      Set<WebSocket> memberConns = roommap.keySet();
  10.         Set<WebSocket> tmpMemberConns = new HashSet(roommap.keySet());
  11.         JSONObject sendJson = new JSONObject();
  12.         sendJson.put("Event", "removeUserinroom");
  13.         sendJson.put("roomID", aRoomID);
  14.        
  15.        
  16.        
  17.        
  18.         if (roommap != null && roommap.containsKey(conn)) {
  19. //          System.out.println(conn + "'s room is " + " removed");
  20.             String currACType = WebSocketUserPool.getACTypeByKey(conn);
  21.             System.out.println("ACType: " + WebSocketUserPool.getACTypeByKey(conn));
  22.            
  23.             /** 清除room相關資料 **/
  24.             if ("Client".equals(currACType)){
  25.                 System.out.println("Client 全清");
  26.                 //全清:
  27.                 for (WebSocket memberConn: tmpMemberConns){
  28.                     WebSocketUserPool.removeUserRoom(memberConn);
  29.                 }
  30.                 roommap.clear();
  31.                 sendJson.put("result", WebSocketUserPool.getUserNameByKey(conn) + " closed the room" + aRoomID);
  32.             // 之後可將一二條件式合併:
  33.             }else if (roommap.size() == 2){
  34.                 System.out.println("roommap.size() == 2 全清");
  35.                 //也全清:
  36.                 for (WebSocket memberConn: tmpMemberConns){
  37.                     WebSocketUserPool.removeUserRoom(memberConn);
  38.                 }
  39.                 roommap.clear();
  40.                 sendJson.put("result", WebSocketUserPool.getUserNameByKey(conn) + " closed the room" + aRoomID);               
  41.             }else if (roommap.size() > 2){
  42.                 System.out.println("roommap.size() > 2  清自己");
  43.                 //清Agent自己
  44.                 WebSocketUserPool.removeUserRoom(conn);
  45.                 roommap.remove(conn);
  46.                 sendJson.put("result", WebSocketUserPool.getUserNameByKey(conn) + " left the room" + aRoomID);             
  47.             }
  48.             System.out.println("roomId: " + aRoomID + " size: " + roommap.size());
  49.             sendJson.put("roomMembers", WebSocketRoomPool.getOnlineUserinroom(aRoomID).toString());
  50.            
  51.            
  52.             /** 告知所有成員有人離開room,請更新前端頁面 **/
  53.             for (WebSocket memberConn: tmpMemberConns){
  54.                 // 若是Logout()觸發的,則跳過
  55.                 if (memberConn.isClosed() || memberConn.isClosing()){
  56.                     continue;
  57.                 }
  58.                 WebSocketUserPool.sendMessageToUser(memberConn, sendJson.toString());
  59.             }
  60.         }
  61.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement