웹 서비스
산학 프로젝트
새로고침 없이 대화가 이어지는 웹 채팅을, 처음 다뤄 본 WebSocket으로 직접 구현해 기업 서비스에 붙였습니다.
업무 배경과 해결 과정
- 배경
기업 프로젝트의 웹 채팅 기능을 주된 개발 범위로 맡았습니다. 사용자가 웹에서 대화할 수 있도록 채팅 기능과 실시간 통신을 구현하고 Firebase를 활용한 서비스에 연동했습니다. 한국항공대학교 산학프로젝트 과목을 통해 참여한 기업 연계 개발입니다.
- 어려웠던 점
처음에는 Firebase 중심으로 실시간 기능을 구현하는 방식을 검토했지만, 응답 흐름과 통신 제어 측면에서 요구사항에 맞는 별도의 실시간 연결이 필요했습니다.
- 이렇게 풀었습니다
WebSocket 연결을 직접 구성해 클라이언트와 서버 간 양방향 통신을 구현했습니다. 메시지가 도착하면 새로고침 없이 채팅창에 바로 반영되도록 하고, 연결 해제와 재접속 상황을 중점적으로 점검했습니다. 기업 측 담당자가 만족한 기능 중 하나였습니다.
직접 만든 것
웹 채팅 화면과 WebSocket 기반 실시간 통신을 개발하고 Firebase를 활용한 서비스 연동을 담당했습니다.
- 01
웹 채팅과 실시간 데이터 송수신
브라우저에서 대화를 주고받는 웹 채팅 기능을 개발했습니다. WebSocket 기반으로 실시간 데이터를 송수신하는 통신 기능을 구현해 사용자 간 대화 내용을 웹에서 확인할 수 있도록 했습니다.
- 02
Firebase를 활용한 서비스 연동
Firebase는 사용자와 채팅 데이터 관리, 서비스 연동에 쓰고 실시간 메시지 송수신은 WebSocket이 맡도록 역할을 나눴습니다. 기업 측 프로젝트에서 요구한 웹 채팅 기능을 개발하는 과정에서, 웹 화면과 실시간 통신을 서비스에 연결하는 작업을 수행했습니다.
사용 기술JavaScript · PHP · Firebase · WebSocket · HTML · CSS · MySQL
담당 범위
- 웹 채팅 기능과 WebSocket 기반 실시간 데이터 통신 개발
- Firebase를 활용한 서비스 개발 및 실서비스 연동
다시 만든다면 (개선 설계안)
구현 내용을 바탕으로 확장해 검토한 설계안입니다.
- 재접속 이후 메시지 복구와 중복 표시 방지
WebSocket 연결이 끊긴 동안 전송한 메시지가 재접속 후 누락되거나 중복 표시되는 상황을 검증 대상으로 둘 수 있습니다. 개선안은 메시지 식별자와 서버 수신 확인을 구분하고 마지막 수신 지점 이후의 메시지를 복구하는 방식입니다. 전송 직전·직후 연결을 끊고 같은 메시지를 재전송해 서버 저장과 화면 표시가 각각 한 번만 이루어지는지 확인합니다.