Skip to content
Snippets Groups Projects
Commit 0d4734cc authored by 천 진강's avatar 천 진강
Browse files

feat(spring): 웹소켓 세션관련 예외처리 추가

parent ba9ec810
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,8 @@ import org.springframework.web.socket.TextMessage; ...@@ -8,6 +8,8 @@ import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler; import org.springframework.web.socket.handler.TextWebSocketHandler;
import java.io.IOException;
@RequiredArgsConstructor @RequiredArgsConstructor
@Component @Component
...@@ -38,15 +40,21 @@ public class WebSocketHandler extends TextWebSocketHandler { ...@@ -38,15 +40,21 @@ public class WebSocketHandler extends TextWebSocketHandler {
if (cmd.equals("PARK")) { if (cmd.equals("PARK")) {
chargingService.park(lot); chargingService.park(lot);
session.sendMessage(new TextMessage( lot + "-PARK")); try {
session.sendMessage(new TextMessage( lot + "-PARK"));
} catch (IOException e) { socketRepository.removeSession(session); }
} }
else if (cmd.length() >= 6) { else if (cmd.length() >= 6) {
if (chargingService.validate(lot, cmd)) { if (chargingService.validate(lot, cmd)) {
session.sendMessage(new TextMessage(lot + "-" + "Y")); try {
session.sendMessage(new TextMessage(lot + "-" + "Y"));
} catch (IOException e) { socketRepository.removeSession(session); }
} }
else { else {
session.sendMessage(new TextMessage(lot + "-" + "N")); try {
session.sendMessage(new TextMessage(lot + "-" + "N"));
} catch (IOException e) { socketRepository.removeSession(session); }
} }
} }
...@@ -59,6 +67,9 @@ public class WebSocketHandler extends TextWebSocketHandler { ...@@ -59,6 +67,9 @@ public class WebSocketHandler extends TextWebSocketHandler {
chargingService.unpark(lot); chargingService.unpark(lot);
socketRepository.removeSession(session); socketRepository.removeSession(session);
session.sendMessage(new TextMessage(lot + "-" + "EXIT")); session.sendMessage(new TextMessage(lot + "-" + "EXIT"));
try {
Thread.sleep(1000000);
} catch (InterruptedException e) { e.printStackTrace(); }
session.close(); session.close();
} }
......
...@@ -33,7 +33,11 @@ public class MainController { ...@@ -33,7 +33,11 @@ public class MainController {
List<WebSocketSession> sessions = socketRepository.findAllSession(); List<WebSocketSession> sessions = socketRepository.findAllSession();
chargingService.extinguish(); chargingService.extinguish();
for (WebSocketSession session : sessions) { for (WebSocketSession session : sessions) {
session.sendMessage(new TextMessage("CLEAR")); try {session.sendMessage(new TextMessage("CLEAR"));}
catch (Exception e) {
e.printStackTrace();
socketRepository.removeSession(session);
}
} }
} }
......
...@@ -136,7 +136,11 @@ public class ChargingService { ...@@ -136,7 +136,11 @@ public class ChargingService {
public void onFire(String lot) throws IOException { public void onFire(String lot) throws IOException {
List<WebSocketSession> sessions = socketRepository.findAllSession(); List<WebSocketSession> sessions = socketRepository.findAllSession();
for (WebSocketSession session : sessions) { for (WebSocketSession session : sessions) {
session.sendMessage(new TextMessage(lot + "-FIRE")); try { session.sendMessage(new TextMessage(lot + "-FIRE")); }
catch (Exception e) {
e.printStackTrace();
socketRepository.removeSession(session);
}
} }
fireState = true; fireState = true;
webMailService.sendFireMail(lot); webMailService.sendFireMail(lot);
...@@ -156,7 +160,7 @@ public class ChargingService { ...@@ -156,7 +160,7 @@ public class ChargingService {
LocalDateTime mail = LocalDateTime.now(ZoneId.of("Asia/Seoul")); LocalDateTime mail = LocalDateTime.now(ZoneId.of("Asia/Seoul"));
park = park.minusMinutes(3); park = park.minusMinutes(3);
mail = mail.minusMinutes(1); mail = mail.minusMinutes(10);
List<Vehicle> vehicles = vehicleRepository.findVehiclesByParkingTimeBeforeAndLastMailBeforeAndDriverIsNotNull(park, mail); List<Vehicle> vehicles = vehicleRepository.findVehiclesByParkingTimeBeforeAndLastMailBeforeAndDriverIsNotNull(park, mail);
for (Vehicle vehicle : vehicles) { for (Vehicle vehicle : vehicles) {
...@@ -187,7 +191,7 @@ public class ChargingService { ...@@ -187,7 +191,7 @@ public class ChargingService {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.set("Accept", "application/json"); headers.set("Accept", "application/json");
HttpEntity<Object> entity = new HttpEntity<>(headers); HttpEntity<Object> entity = new HttpEntity<>(headers);
ResponseEntity<ValidateCarDTO> response = restTemplate.exchange("http://ajou.ftp.sh/api/car?carNumber=" + number ResponseEntity<ValidateCarDTO> response = restTemplate.exchange("http://ajou.ftp.sh:8000/api/car?carNumber=" + number
, HttpMethod.GET,entity, ValidateCarDTO.class); , HttpMethod.GET,entity, ValidateCarDTO.class);
ValidateCarDTO validateCarDTO = response.getBody(); ValidateCarDTO validateCarDTO = response.getBody();
System.out.println(number); System.out.println(number);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment