웹훅과 웹 소켓의 차이점


85

저는 항상 실시간 채팅을하고 싶었습니다.

나는 그 년 전에 PHP + Ajax + Mysql에서 해왔고 내 서버를 망가 뜨렸다. 그런 다음 Flash +로 텍스트 파일을 시도했습니다. 포기하고 10 년 동안 시도하지 않았습니다. 하지만 최근에 웹훅과 웹 소켓에 대해 들었습니다. 그리고 둘 다 그렇게하는 방법 인 것 같지만 저는 그 차이를 잘 이해하지 못합니다. 누구나 설명 할 수 있습니까?

답변:


226

웹훅

웹훅 은 서버 간 통신을위한 것입니다. 그들은 어떤 일이 발생할 때 특정 URL로 데이터를 보내길 원한다고 다른 서버에 알리는 한 서버에 의해 작동합니다.

이 기사에서는 인기있는 서비스에서 웹훅의 일부 사용에 대해 설명합니다. 이 조직 은 RESTful API의 맥락에서 사용하는 것에 대해 많이 이야기합니다.

웹 소켓

웹 소켓 은 (보통) 서버 간 통신을위한 것입니다. 서버는 웹 소켓 서버를 호스팅하고 클라이언트는 해당 서버에 대한 연결을 열 수 있습니다. 이것은 long-polling / COMET 과 같이 문제를 해결하는 이전 방법보다 더 빠르고 자원을 덜 차지하기 때문에 현재 인기가 있습니다 .

이다 WebSocket을을 사용하여 두 서버를 연결할 수 있습니다 ,하지만 그들이 사용하는 것을 보통이 아니다.

혼란

이들 중 하나는 (배타적으로) 서버-서버이고 다른 하나는 (대부분) 브라우저-서버이지만, 이러한 기술은 거의 동일한 문제를 해결하는 것처럼 동일한 장소에서 논의되는 경우가 많습니다. 체인을 충분히 높게 살펴보면 둘 다 "실시간"커뮤니케이션 문제를 해결 하지만 이 문제의 다른 측면을 매우 다른 방식으로 해결한다는 것을 알 수 있습니다.

직접 비교할 수있는 한 가지 상황은 타사 서버에서 사용할 API를 빌드하는 경우입니다. 그 상황에서, 당신은 제공 할 수있다 은 webhook API 또는 웹 소켓 API를 . 두 가지 모두 제 3자가 업데이트를 빠르게받을 수 있도록합니다.

  • 웹 후크를 선택하는 경우 해당 제 3자는 귀하가 알려주는 변경 사항을 클라이언트의 브라우저에 푸시 할 방법을 찾아야합니다.
  • websocket API를 제공하는 경우 제 3자는 각 사용자가 websocket API에 직접 연결하도록 사이트를 설정하기 만하면 서버가 더 적은 작업을 수행 할 수 있습니다.

1
그것은 멋진 대답입니다! 대단히 감사합니다!
데이비드天宇웡

4
웹 소켓은 일반적으로 클라이언트-서버 통신에 사용되지만 이에 국한되지는 않습니다. 서버-서버 통신에도 사용할 수 있습니다.
Pithikos

websocket과 webhook에서 소켓이 지속적으로 열려 있습니까? 수만 대의 서버를 연결하면 포옹이 되나?
Thellimist

3
Websocket은 대화가 진행되는 동안 클라이언트와 서버 모두에서 소켓을 열어 둡니다 (이는 또한 서버를 상태 저장으로 만들어 확장을 더 어렵게 만듭니다). 웹훅은 서버에서 열려있는 소켓이 필요합니다. 클라이언트에서 소켓은 다른 HTTP 요청과 마찬가지로 요청에 대해서만 열립니다. 웹 후크는 클라이언트 (어떤 일이 발생했을 때 많은 서버에 알려야하는 경우) 또는 서버 (많은 클라이언트의 업데이트를 수신해야하는 경우) 모두에서 비용이 많이들 수 있지만 둘 다 HTTP를 사용하고 HTTP 서비스를 확장하는 데 사용할 수있는 많은 솔루션.
turtlemonvh

16

다음은 웹 후크와 웹 소켓 중에서 선택하기위한 몇 가지 추가 정보입니다.

웹 소켓을 통한 서버 간 통신은 차세대 챗봇 앱에서 인기를 얻고 있습니다. 이제 많은 챗봇이 웹 소켓을 통해 실행되며 내부 개인 봇에 대해 공개 URL이 필요하지 않다는 주요 이점을 제공합니다. 이 환경에서 다음은 웹 후크와 웹 소켓 사용을 고려할시기에 대한 몇 가지 지침입니다.

웹 소켓

  • 앱이 브라우저 앱인 경우 앱이 웹훅을 수신 할 수 없으므로 웹 소켓을 사용하십시오.
  • 앱이 인터넷을 통해 서비스에서 메시지를 수신하는 서버 앱이고 방화벽을 열지 않으려면 웹 소켓을 고려하십시오. 일부 회사는 이러한 연결을 열기 전에 정보 보안 검토를 요구합니다.

웹훅

  • 서버 앱 앱에서 많은 구독을해야하는 경우 서버에 대한 열린 웹 소켓 연결 볼륨을 처리 할 준비를하거나 ( 1M 웹 소켓 연결에 대해서는이 문서 참조 ) 웹훅으로 전환하십시오. 일부 인기있는 챗봇은 확장 성을 개선하기 위해 웹 소켓에서 웹훅으로 이동했습니다.
  • 서버 앱이 (AWS Lambda, Google Cloud Functions 등)에서 클라우드 기능으로 실행되는 경우 앱이 웹 소켓 연결을 열어 두지 않으므로 웹훅을 사용하십시오.
  • 서버 앱이 Heroku 프리 티어에서 실행중인 경우 수동으로 서버를 절전 모드로 설정하지 않는 한 Dyno가 절전 모드로 전환되고 하루에 6 시간 동안 절전 모드로 전환되므로 웹훅을 사용하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.