웹소켓(WebSocket)이란 무엇이며 어떻게 작동하는가
작성자 Alchemy
WebSocket은 TCP를 기반으로 하는 양방향 통신 프로토콜로, 클라이언트와 서버 간의 통신을 표준화하여 양쪽 모두가 서로에게 데이터를 요청할 수 있도록 합니다. 반면 HTTP와 같은 단방향 프로토콜은 클라이언트가 서버에게 데이터를 요청하는 것만 허용합니다.
클라이언트와 서버 간의 WebSocket 연결은 양측이 연결을 유지하고자 하는 한 계속 열려 있을 수 있으며, 이를 통해 지속적인 통신이 가능합니다.
HTTP의 경우, 각 연결은 클라이언트가 요청을 보낼 때 시작되고 요청이 처리되면 종료됩니다.
WebSocket은 개별 요청을 반복적으로 보내는 방식과 비교했을 때 중요한 이벤트에 대해 지속적으로 실시간 알림을 제공할 수 있기 때문에 Web3 dApp 알림에 더 적합할 수 있습니다. Alchemy Notify와 같은 도구를 사용하면 지갑과 앱에 실시간 알림을 손쉽게 추가할 수 있습니다.
WebSocket이란?
WebSocket은 클라이언트와 서버 간의 인터랙티브한 통신 세션을 가능하게 하는 양방향 통신 프로토콜입니다. TCP를 기반으로 하며, 실시간 알림 기능을 필요로 하는 앱 및 서비스에서 자주 사용됩니다.
WebSocket 서버란?
WebSocket 서버는 특정 프로토콜을 따라 TCP 포트를 리스닝하는 애플리케이션입니다. WebSocket은 클라이언트와 서버 간의 양방향 통신 프로토콜로, 양쪽 모두가 서로에게 데이터를 요청하고 전송할 수 있습니다.
반면 HTTP는 단방향 통신 프로토콜로, 클라이언트는 서버에 요청만 보낼 수 있고 서버는 그에 대한 응답으로만 데이터를 보낼 수 있습니다. HTTP 관계에서 서버가 클라이언트에게 무언가를 요청하는 경우는 없습니다.
WebSocket 연결이란?
WebSocket 연결은 클라이언트와 서버 간의 지속적인 연결입니다. 반면 HTTP 연결은 일회성입니다. 연결은 클라이언트가 서버에 요청을 보낼 때마다 시작되고 서버의 응답과 함께 종료됩니다. WebSocket 연결은 클라이언트와 서버가 원하는 한 계속 유지될 수 있으며, 이는 최초의 요청 하나로 양측이 원하는 만큼 데이터를 주고받을 수 있음을 의미합니다.
WebSocket은 어떤 프로토콜을 사용하나요?
WebSocket은 전송 제어 프로토콜(Transmission Control Protocol, TCP)을 기반으로 한 WS 프로토콜을 사용합니다. 이는 연결 지향형 네트워크로, 데이터를 올바른 위치로 라우팅하려면 먼저 참여자 간의 연결이 수립되어야 합니다.
반면 인터넷 프로토콜은 데이터 패킷 내부의 정보를 기반으로 데이터를 어디로 보낼지 결정하며, 패킷을 라우팅하기 위한 사전 설정이 필요하지 않습니다.
WebSocket API란?
서버가 클라이언트에게 데이터를 보내는 방법에는 두 가지가 있습니다. 클라이언트가 서버에 정기적으로 데이터를 요청하는 방식인 **폴링(polling)**과, 서버가 클라이언트에게 자동으로 데이터를 보내는 방식인 **서버 푸시(server push)**입니다.
WebSocket API는 최초 요청 이후에도 연결이 열린 상태를 유지하는 특성을 활용하여 서버 푸시 방식을 사용하며, 이를 통해 클라이언트가 새로운 업데이트를 확인하기 위해 서버를 계속 폴링함으로써 발생하는 인프라 부담을 줄여줍니다.
WebSocket은 어떻게 작동하나요?
WebSocket은 양방향 통신 방식으로, 하나의 서버 요청에 대해 여러 번의 응답을 받을 수 있습니다. WebSocket은 주로 클라이언트-서버 통신에 사용되는 반면, 웹훅은 주로 서버-서버 통신에 사용됩니다.
WebSocket은 웹훅과 어떻게 다르게 작동하나요?
WebSocket과 달리 HTTP를 사용하는 웹훅은 완전히 단방향입니다. 서버는 요청이 있을 때만 애플리케이션에 응답하며, 요청이 처리될 때마다 연결이 종료됩니다.
Alchemy Notify는 웹훅을 사용해 서버 간 통신을 수행하고, WebSocket을 사용해 dApp 사용자에게 보이는 알림을 전달합니다.
Web3 WebSocket은 어디에 사용되나요?
Alchemy의 Subscription API는 기존 Ethereum API의 기능을 확장하는 두 가지 새로운 API 메서드인 eth_subscribe와 eth_unsubscribe를 제공합니다. 이를 통해 Web3 개발자는 WebSocket을 사용하여 대기 중인 트랜잭션 정보, 대기 중인 트랜잭션 해시, 새 헤더 블록, 로그 등의 정보나 데이터를 지속적으로 수신할 수 있습니다.
다음은 WebSocket을 사용하는 Alchemy Subscription API에서 지원하는 메서드입니다:
- alchemy_newFullPendingTransactions - pending 상태에 추가된 모든 트랜잭션에 대해 (트랜잭션 해시만이 아닌) 전체 트랜잭션 정보를 반환합니다
- alchemy_filteredNewFullPendingTransactions - to 또는 from 주소 필터와 일치하는 모든 대기 중인 트랜잭션의 트랜잭션 정보를 반환합니다
- newPendingTransactions - 직접 보낸 것인지 여부와 관계없이 pending 상태에 추가된 모든 트랜잭션의 해시를 반환합니다
- newHeads - 새로운 헤더(블록)가 블록체인에 추가될 때마다 이벤트를 전송합니다
- logs - 지정한 필터 조건과 일치하는, 새로 추가된 블록에 포함된 로그를 전송합니다
기존 WebSocket 연결을 종료해야 할 때는 구독 ID 파라미터와 함께 eth_unsubscribe 호출을 사용할 수 있습니다.
WebSocket과 웹훅 중 언제 무엇을 사용해야 할까요?
WebSocket과 웹훅 중 어떤 것을 사용할지는 여러 개의 WebSocket 연결을 동시에 유지하는 것과 클라이언트로부터의 다수의 웹훅 연결 요청을 처리하는 것 중 어느 쪽을 인프라 설계상 더 잘 처리할 수 있는지에 따라 달라집니다.
서버 애플리케이션이 클라우드 함수(AWS Lambda, Google Cloud Functions 등)로 실행되는 경우, 애플리케이션이 WebSocket 연결을 계속 유지하지 않으므로 웹훅을 사용하세요.
전송되는 알림의 수가 적다면, 연결이 이벤트 발생이라는 조건에서만 시작된다는 점에서 웹훅이 더 우수합니다.
이벤트가 드물게 발생한다면, 클라이언트와 서버 사이에 많은 WebSocket 연결을 열어 두는 것보다 웹훅을 사용하는 것이 낫습니다.
마지막으로, 서버와 다른 서버를 연결하려는 것인지, 아니면 클라이언트와 서버를 연결하려는 것인지도 중요한 고려 사항입니다. 전자의 경우에는 웹훅이, 후자의 경우에는 WebSocket이 더 적합합니다. 웹훅 서버 설정을 위한 Github 저장소를 만들어 두었습니다.
WebSocket 프로토콜은 언제 사용해야 할까요?
많은 Web3 앱에서 사용자에게 트랜잭션 상태를 실시간으로 업데이트하는 것은 필수적입니다. 그렇지 않으면 사용자 경험이 나빠져 앱이나 서비스를 이탈할 수 있습니다. Alchemy Notify는 사용자에게 트랜잭션의 정확한 상태를 알려줌으로써 이 문제를 해결합니다.
HTTP 대신 WebSocket을 언제 사용해야 할까요?
사용자가 이벤트 발생 즉시 알림을 받을 수 있도록 지연 시간을 최대한 낮춰야 하는 경우에는 HTTP 요청 대신 WebSocket을 사용해야 합니다. HTTP는 클라이언트가 요청을 보내는 빈도에 의해 업데이트를 받는 빈도가 제한되기 때문에 상대적으로 훨씬 느립니다.
WebSocket 예시
지갑 잔액 변경과 같은 중요한 이벤트에 대해 사용자에게 알리는 인앱 알림을 구현하기 위해 Alchemy Notify를 활용하는 방법에 대한 가이드를 작성했습니다. 다음은 저희가 게시한 몇 가지 튜토리얼입니다:
Alchemy Notify를 사용하면 dApp 사용자에게 이메일 알림을 보낼 수도 있어, 트랜잭션 상태에 대한 사용자의 불편함을 줄일 수 있습니다.
관련 개요
기술2026년 5월 19일
Webhooks 대 WebSockets 대 gRPC
실시간 데이터 전달을 지배하는 세 가지 프로토콜이 있습니다. webhooks, WebSockets, gRPC가 어떻게 다른지, 각각 언제 한계에 부딪히는지, 그리고 이들 중 어떻게 선택해야 하는지 설명합니다.
기술2022년 6월 20일
웹훅(webhook)이란?
실시간 Web3 알림을 위한 웹훅 설정 및 사용 방법
지갑2026년 9월 2일
Agent Wallets: AI 에이전트를 위한 세션 및 권한 모델
AI 에이전트가 개인 키를 보유하지 않고도 범위가 지정되고 취소 가능한 지갑 액세스 권한을 얻는 방법: 세션, 위임 서명, 즉시 취소.

블록체인 매직을 만드세요
Alchemy는 가장 강력한 Web3 개발자 제품 및 도구를 리소스, 커뮤니티, 그리고 전설적인 지원과 결합합니다.