기술 기초

웹소켓과 리스너

hebom 2025. 1. 17. 10:54

1. 리스너
- 웹소켓(WebSocket) 통신에서 "리스너(listener)"는 웹소켓 연결이 설정된 후, 서버와 클라이언트 간에 발생하는 다양한 이벤트를 감지하고 처리하는 역할 
- 주로 이벤트 핸들러로 작동, 클라이언트나 서버에서 발생하는 특정 이벤트에 반응하여 적절한 작업을 수행
○ 웹소켓에서 일반적으로 사용하는 이벤트
i. open: 웹소켓 연결이 성공적으로 열렸을 때 발생.
ii. message: 서버나 클라이언트가 메시지를 보냈을 때 발생.
iii. close: 웹소켓 연결이 종료될 때 발생.
iv. error: 웹소켓 연결에서 에러가 발생했을 때 발생.
- 역할 : 웹소켓 연결 상태와 메시지 송수신 상태에 따라 적절한 행동을 취하도록 돕는 것
       이를 통해, 연결을 관리, 데이터 처리, 오류나 연결 종료 시 사용자에게 알리거나 자동으로 재연결을 시도하는 등의 작업

2. 웹소켓 vs 리스너
1) 웹소켓
○ 연결을 관리하는 주체 
○ 웹소켓 객체는 서버와의 연결을 설정, 데이터를 전송, 연결을 종료하는 등의 역할
○ 예) 웹소켓 객체에서 new WebSocket(url)을 호출하여 연결을 시작
2) 리스너
○ 이벤트 처리를 담당
○ 웹소켓 연결이 열리거나, 메시지가 수신, 연결이 종료될 때 등 다양한 상황에 대해 리스너가 반응하여 적절한 처리
○ 리스너는 웹소켓 객체에서 발생하는 이벤트를 감지, 해당 이벤트가 발생할 때마다 특정 작업을 수행
○ 예) 메시지를 받으면 그 메시지를 화면에 출력, 오류가 발생하면 재연결을 시도하는 등의 행동
2-1. 기능에 따라 역할
1. 연결:
○ 웹소켓이 서버와 연결을 생성하고 유지, 이 연결 자체는 웹소켓 객체의 open 이벤트에 의해 확인
○ 리스너는 이 연결 상태를 처리. 예를 들어, 연결이 성공적으로 완료되었을 때 발생하는 open 이벤트에서 연결 후 작업을 정의
2. 데이터 송수신:
○ 데이터를 보내고 받을 때는 웹소켓 객체가 그 일을 진행. 예를 들어, socket.send(data)를 사용해서 서버로 메시지를 보낼 수 있음
○ 리스너는 서버로부터 받은 메시지에 대한 처리를 담당. message 이벤트 리스너는 서버로부터 데이터를 수신할 때 호출, 그 데이터를 어떻게 처리할지 정의
3. 연결 상태 관리:
○ 웹소켓은 연결 상태(open, close, error 등)를 유지, 이 상태가 변할 때 리스너가 반응할 수 있도록 함
○ 예를 들어, 연결이 종료되면 close 이벤트 리스너가 호출되어 사용자에게 알림을 보냄, 연결이 끊어진 후 재연결을 시도하는 등의 작업을 할 수 있음

따라서, 웹소켓은 통신의 기반, 리스너는 그 통신을 통해 발생하는 사건들에 대한 반응을 담당