배경
진행 중인 프로젝트에서
영상을 실시간으로 스트리밍 하면서 그 영상의 처리를 해주는 API를 원했다.
지금까지는 REST API를 만들어서 요청과 응답으로 구성되어 있는 API에 익숙해져 있었다.
하지만 실시간으로 바로 처리하면서 기능을 수행하기에는 한계가 있었다.
그러면서 WebSocket의 개념이 생각났고,
REST API가 사용하는 방법이 아닌 WebSocket 개념을 사용한다면
내가 원하는 API가 될것같았다!
찾아보니 WebSocket API가 존재했고 둘의 차이점을 비교해 보자
REST API
REST API는 기본적으로 요청과 응답으로 연결된다.
HTTP URI로 엔드포인트를 명시하고,
HTTP Method(Post, Get 등)을 통해 요청을 보내게 된다.
그리고 API의 기능이 끝나면 다시 응답을 보내는 구조다.
필수적으로 요청이 들어와야 응답을 할 수 있으며,
요청이 없다면 응답할 수 없다.
프로젝트에 적용시키면
실시간 스트리밍 영상을 픽셀마다 요청을 주거나,
일정시간 동안 영상을 녹화 후 처리하는 등의 방법이 있지만
이것은 실시간이라고 말할 수는 없다.
WebSocket API
WebSocket API는 이름에서도 알 수 있듯이
WebSocket의 기능을 사용한 API이다.
REST API에서는 HTTP 프로토콜의 다양한 기능을 통해 API를 연결해 사용했다면
WebSocket API는 WebSocket의 기능을 사용하여 API를 연결했다.
먼저 WebSocket을 알아보자.
WebSocket은 한 번의 연결이 이루어지면 지속적인 연결을 제공하는 프로토콜이다.
카카오톡의 채팅을 생각하면 된다.
채팅방에 들어가면 지속적으로 메시지를 보낼 수 있고,
채팅방 내에서 바로바로 상대방의 메세지를 확인할 수 있다.
이처럼 한쪽에서의 일방적인 요청이 있는 구조가 아니라
필요에 따라 양방향에서 데이터를 주고받을 수 있는 구조이다.
구현
Python 언어를 사용해서 WebSocket API를 구성한다면
Flask-SocketIO를 통해 구현할 수 있다.
pip install flask-socketio
'WEB' 카테고리의 다른 글
[Trouble Shooting] CORS 에러 ->> The request client is not a secure context and the resource is in more-private address space `private`. (0) | 2023.05.31 |
---|---|
[Web] WebRTC를 활용한 화상통화 서비스의 서버 구성 (0) | 2023.05.02 |
[Web] Web Socket / Web RTC (0) | 2023.04.09 |
[React] 리액트 시작하기 (0) | 2022.12.27 |
[Web] REST API 에서 파일 송수신 (0) | 2022.11.01 |