상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - switchMap을 사용하여 웹 소켓 데이터를 처리하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
switchMap을 사용하여 웹 소켓 데이터를 처리하는 방법에 대해 자세히 설명드리겠습니다. 먼저 switchMap은 RxJS에서 제공하는 고차 연산자 중 하나로, 외부 Observable이 방출하는 값마다 내부 Observable을 생성하고 구독합니다. 이 때 이전에 생성된 내부 Observable이 아직 완료되지 않았다면 구독을 취소(switch)하고 새로 생성된 Observable만 구독하게 됩니다. 즉, 최신 데이터 스트림을 우선시하면서 불필요한 이전 구독을 해제하는 데 매우 유용합니다. 이 점이 웹 소켓 데이터 처리에서 중요한 이유는 웹 소켓이 지속적으로 실시간 데이터를 스트리밍하므로 새로운 연결(또는 새로운 메시지 처리 요청)이 들어올 때 이전 연결(또는 처리 작업)을 취소하고 최신 데이터에 집중할 수 있기 때문입니다. 웹 소켓 데이터 처리에 switchMap을 적용하는 기본 흐름 1. 웹 소켓 연결 생성: 웹 소켓 커넥션을 Observable로 래핑합니다. 예를 들어, RxJS에서는 `webSocket` 함수를 사용할 수 있습니다. 2. 외부 이벤트 발생 감지: 예를 들어 사용자의 특정 액션, <a href='https://sangseek.com/sangseeks/검색어/ko'>검색어</a> 입력, 필터 변경 등 새로운 데이터를 요청하는 트리거 Observable이 있습니다. 3. switchMap 적용: 트리거 Observable에서 방출된 값에 대해 switchMap을 사용해, 웹 소켓 Observable을 생성하거나 데이터를 처리하는 새로운 내부 Observable을 반환합니다. 4. 이전 데이터 스트림 취소: switchMap은 새로운 값이 들어올 때마다 이전 웹 소켓 스트림을 자동으로 해제합니다. 따라서 중첩된 웹 소켓 연결이 여러 개 생기지 않고 항상 최신 스트림만 유지됩니다. 5. 데이터 처리 및 구독: switchMap이 반환한 내부 Observable에서 데이터를 구독하며 실시간 데이터를 화면에 출력하거나 상태를 갱신합니다. --- 예시 코드 (TypeScript, RxJS 환경) ```typescript import { webSocket } from 'rxjs/webSocket'; import { fromEvent, switchMap } from 'rxjs'; // 웹 소켓 URL const WS_URL = 'wss://example.com/socket'; // 사용자의 입력 이벤트 const input = document.querySelector('input')!; const input$ = fromEvent(input, 'input'); // 입력 이벤트마다 새로운 웹 소켓을 연결하고 실시간 데이터 받아오기 const liveData$ = input$.pipe( switchMap((event: Event) => { const target = event.target as HTMLInputElement; const query = target.value; // 웹 소켓 생성 const socket$ = webSocket(`${WS_URL}?query=${query}`); // 웹 소켓이 방출하는 데이터 스트림 반환 return socket$; }) ); // 구독하여 데이터 처리 liveData$.subscribe({ next: data => { console.log('실시간 데이터:', data); // 화면 업데이트 또는 상태 저장 처리 }, error: err => { console.error('웹 소켓 에러:', err); }, complete: () => { console.log('웹 소켓 연결 완료'); } }); ``` 핵심 포인트 - `input$`는 사용자가 계속해서 검색어를 입력할 때마다 새로운 이벤트를 방출합니다. - `switchMap`은 새 입력이 들어올 때마다 이전 웹 소켓 연결을 해제하고, 새 쿼리로 연결을 다시 생성합니다. - 이로 인해 이전의 불필요한 웹 소켓 연결이 남지 않아 리소스 누수가 방지되고, 항상 최신 쿼리에 대한 실시간 데이터만 받습니다. - 내부적으로 웹 소켓 연결을 Observable로 다루면서, RxJS 연산자를 활용해 안정적이고 선언적인 데이터 스트림 제어가 가능합니다. --- 요약 - switchMap 은 새로운 내부 스트림(웹 소켓 연결) 생성 시 이전 스트림 구독을 자동으로 취소하여 최신 데이터 스트림에 집중할 수 있게 해준다. - 웹 소켓 데이터를 처리할 때 클라이언트 요청이나 이벤트에 따라 지속적으로 데이터를 다시 구독할 필요가 있을 때 매우 편리하다. - 리소스 낭비를 줄이고, 중복 데이터 처리 없이 최신 상태를 유지하는 실시간 애플리케이션 개발에 적합하다. 이와 같이 `switchMap`을 활용해 웹 소켓 데이터를 처리하면 효율적이고 깔끔한 실시간 데이터 스트림 관리를 할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기