이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
이 기사에서는 WebSockets 및 Server-Sent Events라는 두 가지 기술을 사용하여 백엔드 애플리케이션에 실시간 통신 기능을 추가하는 방법에 대해 설명합니다. 각 기술의 기본 사항과 다른 기술을 사용하고 싶을 때 살펴보겠습니다. 마지막으로 시작하는 데 도움이 되는 몇 가지 코드 스니펫을 제공합니다.
WebSocket은 클라이언트와 서버 간에 데이터가 실시간으로 앞뒤로 흐를 수 있도록 연결을 열린 상태로 유지하는 방법입니다. 연결이 설정되면 당사자 중 하나가 연결을 닫기로 결정할 때까지 열린 상태로 유지됩니다. 따라서 WebSocket은 채팅 응용 프로그램이나 멀티 플레이어 게임과 같이 지속적인 통신이 필요한 응용 프로그램에 매우 적합합니다.
WebSocket은 HTTP와 매우 유사한 프로토콜을 사용하므로 HTTP를 지원하는 모든 라이브러리 또는 프레임워크와 함께 사용할 수 있습니다. 연결을 설정하기 위해 클라이언트는 WebSocket 프로토콜을 사용할 것임을 나타내는 특정 헤더와 함께 서버에 요청을 보냅니다. 그런 다음 서버는 자체 헤더로 응답하고 연결이 설정됩니다. 그런 다음 클라이언트에서 서버로 또는 그 반대로 전송되는 모든 데이터는 설정된 연결을 통과합니다.
WebSocket 사용의 한 가지 이점은 멀티플렉싱과 함께 사용할 수 있다는 것입니다. 이는 단일 연결을 사용하여 동시에 여러 목적으로 데이터를 송수신할 수 있음을 의미합니다. 연결을 오랫동안 열어두고 데이터를 보내거나 받을 때마다 새 연결을 설정하지 않으려는 경우에 유용할 수 있습니다.
또 다른 장점은 연결이 영구적이기 때문에 서버의 응답을 기다리지 않고 언제든지 데이터를 보내는 데 사용할 수 있다는 것입니다. 이는 채팅 애플리케이션이나 멀티플레이어 게임과 같이 실시간으로 데이터를 전송해야 하는 애플리케이션에 유용할 수 있습니다.
SSE(Server-Sent Events)는 서버에서 클라이언트로 이벤트를 실시간으로 보내는 기술입니다. WebSocket과 달리 SSE는 서버에서 클라이언트로 단방향 통신 채널을 사용합니다. 즉, 클라이언트는 서버에서 데이터를 받을 수만 있고 서버로 데이터를 다시 보낼 수는 없습니다.
SSE는 서버 측 푸시 알림과 함께 사용하도록 설계되었습니다. 이는 클라이언트가 적극적으로 데이터를 요청하지 않는 경우에도 서버가 클라이언트에 데이터를 보낼 수 있음을 의미합니다. 따라서 SSE는 실시간으로 데이터를 수신해야 하지만 주식 시세 표시기 또는 스포츠 점수와 같은 데이터를 서버로 다시 보낼 필요가 없는 애플리케이션에 매우 적합합니다.
SSE는 HTML5 표준의 일부이므로 HTML5를 지원하는 모든 라이브러리 또는 프레임워크와 함께 사용할 수 있습니다. 연결을 설정하기 위해 클라이언트는 SSE 프로토콜을 사용할 것임을 나타내는 특정 헤더와 함께 서버에 요청을 보냅니다. 그런 다음 서버는 자체 헤더로 응답하고 연결이 설정됩니다. 그런 다음 서버에서 클라이언트로 전송되는 모든 데이터는 설정된 연결을 통과합니다.
SSE를 사용하는 한 가지 이점은 HTML5 표준의 일부이므로 브라우저에서 잘 지원된다는 것입니다. 또 다른 장점은 연결이 영구적이기 때문에 클라이언트의 응답을 기다리지 않고 언제든지 데이터를 보내는 데 사용할 수 있다는 것입니다. 이는 주식 시세 표시기 또는 스포츠 점수와 같이 실시간으로 데이터를 전송해야 하는 애플리케이션에 유용할 수 있습니다.
일반적으로 클라이언트와 서버 간의 양방향 통신이 필요한 경우 WebSocket을 사용해야 하고 서버에서 클라이언트로의 단방향 통신만 필요한 경우 SSE를 사용해야 합니다.