WebSockets는 확실히 미래입니다.
긴 폴링은 AJAX와 같이 각 요청에 대한 연결을 만드는 것을 막는 더러운 해결 방법이지만 WebSocket이 존재하지 않을 때 긴 폴링이 생성되었습니다. 이제 WebSocket으로 인해 긴 폴링이 사라집니다.
WebRTC는 피어 투 피어 통신을 허용합니다.
WebSockets를 배우는 것이 좋습니다 .
비교:
웹상의 다양한 통신 기술
AJAX - request
→ response
. 서버에 대한 연결을 작성하고 선택적 데이터와 함께 요청 헤더를 전송하고 서버에서 응답을 얻은 후 연결을 닫습니다.
모든 주요 브라우저에서 지원됩니다.
긴 설문 조사 - request
→ wait
→ response
. AJAX와 같이 서버에 대한 연결을 작성하지만 얼마 동안 (계속) 연결 유지 연결을 유지합니다. 연결 중에 열린 클라이언트는 서버에서 데이터를 수신 할 수 있습니다. 시간 초과 또는 데이터 eof로 인해 연결이 종료 된 후 클라이언트는 주기적으로 다시 연결해야합니다. 서버 측에서는 AJAX와 동일한 HTTP 요청처럼 처리됩니다. 단, 요청시 응답은 현재 또는 향후에 애플리케이션 로직에 의해 정의 될 것입니다.
지원 차트 (전체) | 위키 백과
WebSocket을 - client
↔ server
. 서버에 대한 TCP 연결을 작성하고 필요한만큼 열어 두십시오. 서버 나 클라이언트는 연결을 쉽게 닫을 수 있습니다. 클라이언트는 HTTP 호환 핸드 셰이크 프로세스를 거칩니다. 성공하면 서버와 클라이언트는 언제든지 양방향으로 데이터를 교환 할 수 있습니다. 응용 프로그램이 두 가지 방식으로 자주 데이터를 교환해야하는 경우 효율적입니다. WebSocket에는 클라이언트에서 서버로 전송되는 각 메시지에 대한 마스킹을 포함하는 데이터 프레임이 있으므로 데이터가 단순히 암호화됩니다.
지원 차트 (매우 좋음) | 위키 백과
WebRTC - peer
↔ peer
. 전송은 클라이언트간에 통신을 설정하고 전송에 독립적이므로 UDP, TCP 또는 훨씬 더 추상적 인 계층을 사용할 수 있습니다. 일반적으로 비디오 / 오디오 스트리밍과 같은 대용량 데이터 전송에 사용되며, 신뢰성이 2 차이고 응답 시간 및 적어도 일부 데이터 전송을 위해 몇 개의 프레임 또는 품질 진행 감소가 희생 될 수 있습니다. 양쪽 (피어)은 서로 독립적으로 데이터를 푸시 할 수 있습니다. 중앙 서버와는 완전히 독립적으로 사용할 수 있지만 여전히 엔드 포인트 데이터를 교환 할 수있는 방법이 필요합니다. 대부분의 경우 개발자는 중앙 서버를 사용하여 피어를 "링크"합니다. 이는 중앙 집중식 서버가 필요하지 않은 연결을 설정하기 위해 필수 데이터를 교환하는 데만 필요합니다.
지원 차트 (중간) | 위키 백과
서버가 보낸 이벤트 - client
← server
. 클라이언트는 서버에 지속적이고 장기적인 연결을 설정합니다. 서버 만이 클라이언트에게 데이터를 보낼 수 있습니다. 클라이언트가 서버로 데이터를 보내려면 다른 기술 / 프로토콜을 사용해야합니다. 이 프로토콜은 HTTP와 호환되며 대부분의 서버 측 플랫폼에서 구현하기가 쉽습니다. Long Polling 대신 사용하기에 바람직한 프로토콜입니다. 지원 차트 (IE 제외) | 위키 백과
장점 :
WebSockets 서버 측 의 주요 장점은 HTTP 요청 (핸드 셰이크 후)이 아니라 적절한 메시지 기반 통신 프로토콜이라는 것입니다. 이를 통해 엄청난 성능 및 아키텍처 이점을 얻을 수 있습니다 . 예를 들어 node.js에서 다른 소켓 연결에 대해 동일한 메모리를 공유 할 수 있으므로 각 공유 변수에 액세스 할 수 있습니다. 따라서 데이터베이스를 중간에 교환 지점으로 사용할 필요가 없습니다 (예 : AJAX 또는 Long Polling과 같이 PHP와 같은 언어 사용). RAM에 데이터를 저장하거나 소켓간에 즉시 다시 게시 할 수도 있습니다.
보안 고려 사항
사람들은 종종 WebSockets의 보안에 대해 걱정합니다. 실제로는 차이가 적거나 WebSocket을 더 나은 옵션으로 사용합니다. 우선 AJAX를 사용하면 각 요청이 인터넷 인프라를 통과하는 새로운 TCP 연결이므로 MITM 가능성이 높아집니다 . WebSocket을 사용하면 일단 연결되면 데이터를 클라이언트에서 서버로 스트리밍 할 때 프레임 마스킹을 강화하고 추가 압축을 수행하여 데이터를 조사하는 데 더 많은 노력이 필요합니다. 모든 최신 프로토콜은 HTTP 및 HTTPS (암호화)를 모두 지원합니다.
추신
WebSocket은 일반적으로 http 와는 달리 실시간 게임과 비슷하지만 네트워킹 에 대해 매우 다른 논리 접근 방식을 가지고 있음을 기억 하십시오.