저는 항상 실시간 채팅을하고 싶었습니다.
나는 그 년 전에 PHP + Ajax + Mysql에서 해왔고 내 서버를 망가 뜨렸다. 그런 다음 Flash +로 텍스트 파일을 시도했습니다. 포기하고 10 년 동안 시도하지 않았습니다. 하지만 최근에 웹훅과 웹 소켓에 대해 들었습니다. 그리고 둘 다 그렇게하는 방법 인 것 같지만 저는 그 차이를 잘 이해하지 못합니다. 누구나 설명 할 수 있습니까?
답변
웹훅
웹훅 은 서버 간 통신을위한 것입니다. 그들은 어떤 일이 발생할 때 특정 URL로 데이터를 보내길 원한다고 다른 서버에 알리는 한 서버에 의해 작동합니다.
이 기사에서는 인기있는 서비스에서 웹훅의 일부 사용에 대해 설명합니다. 이 조직 은 RESTful API의 맥락에서 사용하는 것에 대해 많이 이야기합니다.
웹 소켓
웹 소켓 은 (보통) 서버 간 통신을위한 것입니다. 서버는 웹 소켓 서버를 호스팅하고 클라이언트는 해당 서버에 대한 연결을 열 수 있습니다. 이것은 long-polling / COMET 과 같이 문제를 해결하는 이전 방법보다 더 빠르고 자원을 덜 차지하기 때문에 현재 인기가 있습니다 .
이다 WebSocket을을 사용하여 두 서버를 연결할 수 있습니다 ,하지만 그들이 사용하는 것을 보통이 아니다.
혼란
이들 중 하나는 (배타적으로) 서버-서버이고 다른 하나는 (대부분) 브라우저-서버이지만, 이러한 기술은 거의 동일한 문제를 해결하는 것처럼 동일한 장소에서 논의되는 경우가 많습니다. 체인을 충분히 높게 살펴보면 둘 다 “실시간”커뮤니케이션 문제를 해결 하지만 이 문제의 다른 측면을 매우 다른 방식으로 해결한다는 것을 알 수 있습니다.
직접 비교할 수있는 한 가지 상황은 타사 서버에서 사용할 API를 빌드하는 경우입니다. 그 상황에서, 당신은 제공 할 수있다 은 webhook API 또는 웹 소켓 API를 . 두 가지 모두 제 3자가 업데이트를 빠르게받을 수 있도록합니다.
- 웹 후크를 선택하는 경우 해당 제 3자는 귀하가 알려주는 변경 사항을 클라이언트의 브라우저에 푸시 할 방법을 찾아야합니다.
- websocket API를 제공하는 경우 제 3자는 각 사용자가 websocket API에 직접 연결하도록 사이트를 설정하기 만하면 서버가 더 적은 작업을 수행 할 수 있습니다.
답변
다음은 웹 후크와 웹 소켓 중에서 선택하기위한 몇 가지 추가 정보입니다.
웹 소켓을 통한 서버 간 통신은 차세대 챗봇 앱에서 인기를 얻고 있습니다. 이제 많은 챗봇이 웹 소켓을 통해 실행되며 내부 개인 봇에 대해 공개 URL이 필요하지 않다는 주요 이점을 제공합니다. 이 환경에서 다음은 웹 후크와 웹 소켓 사용을 고려할시기에 대한 몇 가지 지침입니다.
웹 소켓
- 앱이 브라우저 앱인 경우 앱이 웹훅을 수신 할 수 없으므로 웹 소켓을 사용하십시오.
- 앱이 인터넷을 통해 서비스에서 메시지를 수신하는 서버 앱이고 방화벽을 열지 않으려면 웹 소켓을 고려하십시오. 일부 회사는 이러한 연결을 열기 전에 정보 보안 검토를 요구합니다.
웹훅
- 서버 앱 앱에서 많은 구독을해야하는 경우 서버에 대한 열린 웹 소켓 연결 볼륨을 처리 할 준비를하거나 ( 1M 웹 소켓 연결에 대해서는이 문서 참조 ) 웹훅으로 전환하십시오. 일부 인기있는 챗봇은 확장 성을 개선하기 위해 웹 소켓에서 웹훅으로 이동했습니다.
- 서버 앱이 (AWS Lambda, Google Cloud Functions 등)에서 클라우드 기능으로 실행되는 경우 앱이 웹 소켓 연결을 열어 두지 않으므로 웹훅을 사용하십시오.
- 서버 앱이 Heroku 프리 티어에서 실행중인 경우 수동으로 서버를 절전 모드로 설정하지 않는 한 Dyno가 절전 모드로 전환되고 하루에 6 시간 동안 절전 모드로 전환되므로 웹훅을 사용하십시오.