WebSocket은 클라이언트와 서버 사이에 지속적인 완전 양방향 연결 스트림, 즉 상호작용을 가능하게 해줘서 실시간 서비스 구현이 필요할 때 사용하는데, 다만 webSocket을 지원하지 않는 브라우저도 있기 때문에(물론 최근에는 대부분 지원) 크로스 브라우징에 대응하는 과정에서 나온 것이 socket.IO와 sockJS입니다. 우선 WebSocket을 시도하고, 실패할 경우 HTTP Streaming, Long-Polling 같은 HTTP 기반의 다른 기술로 전환해 재차 연결을 시도합니다. 일반적으로 node.js 환경에서는 socket.IO, Spring 기반에서는 sockJS를 사용하는 것으로 알고 있습니다. 보통 SockJS는 stomp라고 하는 메세지 프로토콜과 함께 사용됩니다.