웹 소켓( WebSocket ) 이란 ?
Transport protocol의 일종으로 서버와 클라이언트의 양뱡향 통신을 위한 구조입니다.
SockJs 란?
WebSocket을 사용하여 채팅방을 구현 할 시 채팅방을 개설하여 각각의 채팅방에서 채팅을 한다고 가정한다면 서버에서는 만들어진 모든 채팅방을 조사하여 서버에 들어온 메세지가 어느방의 메세지인지 검사를 해야하는 코드를 직접 작성해야 하는 불편함이 있습니다.
그것을 간단하고 쉽게 쓸 수 있게해주는 API가 SockJS 인데 SockJS는 Stomp와 같은 메세지 포맷을 하는 브로커같은 프로토콜을 같이 사용합니다.
SockJS, Stomp는 구독방식인데 클라이언트가 특정 url을 구독하면 서버에서는 그 특정 구독된 url로 메세지를 보낼 수 있습니다. 이 때 서버에서는 기본 구독 url주소를 설정해주고 클라이언트로부터 넘겨져오는 값을 url에 추가로 세팅해주어 특정한곳에 메세지를 보낼 수 있게 되는것 입니다.
ex) 서버기본구독url : /chatRoom
서버 : /chatRoom/(클라이언트로부터 받은 값)
클라이언트의 구독url : /chatRoom/room_num
이렇게되면 각각의 채팅방에 맞게 메세지를 클라이언트에게 전송해줄 수 있게되는것 입니다.
p.s WebSocket은 요즘 인기있는 실시간 채팅 또는 실시간으로 이루어지는 것들에서 사용되므로
특별한 앱을 개발할때 유용할것으로 생각합니다.