서버-클라이언트 연동 문제 해결 및 기능 개선

개요

오늘은 서버와 클라이언트를 연동하면서 생긴 문제들을 해결하고, 더 나은 사용자 경험을 제공하는 데 집중했습니다. 여러 기술적인 문제들을 해결하면서 애플리케이션의 완성도를 높일 수 있었습니다.

주요 해결 문제

서버-클라이언트 연동 문제 해결

  • 서버 연결 오류 (java.net.ConnectException)
    • 원인: 잘못된 경로에서 백엔드 서버를 실행하는 바람에 서버가 정상적으로 구동되지 않았습니다.
    • 해결: 올바른 backend 디렉토리로 이동해 서버를 재시작하여 간단히 해결했습니다.
  • 인증 문제 (401 Unauthorized)
    • 원인: 클라이언트에서 API를 호출할 때마다 401 Unauthorized 오류가 발생했는데, 원인은 Spring Security의 기본 설정 때문이었습니다.
    • 해결: build.gradle 파일에서 Spring Security 관련 의존성을 제거하여 문제를 해결했습니다.
  • 데이터베이스 초기화 문제
    • 원인: API를 요청해도 데이터 없이 빈 목록만 돌아오는 현상이 있었습니다. 확인해보니 data.sql 스크립트가 실행되지 않은 것이 문제였습니다.
    • 해결: application.properties 파일에 spring.jpa.defer-datasource-initialization=truespring.sql.init.mode=always 두 줄을 추가하여, 서버가 켜질 때 데이터가 자동으로 들어가도록 수정했습니다.

클라이언트 기능 개선 및 오류 수정

  • UI 메시지 개선
    • 클라이언트에서 게임 탐색 상태에 따라 “탐색 중…”, “현재 플레이 중: [게임 이름]”, “실행 중인 게임을 찾을 수 없습니다.”와 같이 명확한 한글 메시지를 표시하도록 UI 로직을 개선했습니다.
    • 메시지가 깜빡이는 현상을 해결해 사용자 경험을 향상시켰습니다.
  • 빌드 오류 해결
    • 원인: Game 클래스를 찾지 못하는 import 오류가 계속 발생했는데, 이는 Gradle의 빌드 캐시 문제였습니다.
    • 해결: clean build 명령어로 프로젝트를 새로 빌드하여 캐시 문제를 해결했습니다.

Git 버전 관리

  • 오늘 작업한 내용들은 “feat: 서버-클라이언트 연동 및 게임 프로세스 스캔 기능 구현”이라는 커밋으로 묶어서 원격 저장소에 업로드했습니다.

결론

오늘은 백엔드에서 발생했던 연결, 인증, DB 초기화 문제를 해결하고, 클라이언트의 UI와 빌드 오류까지 수정하며 전반적인 안정성을 높인 하루였습니다. 이제 서버와 클라이언트가 문제없이 통신하고, 사용자는 실행 중인 게임 정보도 제대로 확인할 수 있게 되었습니다.