Web Socket 간단 정리
Web Socket
양방향 데이터 통신
양방향 데이터 통신 프로토콜
데이터는 packet 형태로 전달
전송은 커넥션 중단과 추가 HTTP 요청 없이 양방향 전송
-
new WebSocket
웹소켓 연결 만들 시 호출
ws 라는 특수 프로토콜 사용
let socket = new WebSocket("ws://url")
-
wss
암호화된 WebSocket
WebSocket 사용시 지향
TSL (전송 계층 보안) 이라는 계층 통과해 전달
송신자가 암호화 시키고 서버에서 수신자가 복호화
-
이벤트
소켓 정상적으로 만들어지면 사용
open : 커넥션 정상 생성
message : data received
error : WebSocket 에러
close : 커넥션 종료
-
핸드 셰이크
new WebSocket(url) 호출해 생성 시 즉시 연결 시작
바닐라 JS 로 헤더 설정 막혀있기 때문에 핸드셰이크 모방 불가능.
-
순서
-
브라우저가 HTTP 요청으로 헤더에 웹 소켓 지원하냐고 물어봄
-
서버가 HTTP 응답으로 지원 여부 전송
-
지원할 시 연결/지원 안 할 시 안됨
-
-
요청 헤더
Origin : 클라이언트 오리진. 서버가 확인하고 소켓 통신 할 지 말지 결정함. 크로스 오리진 요청 지원.
Connection : 클라이언트가 프로토콜 바꾸고 싶다는 신호
Upgrade : 요청 프로토콜 의미
Sec-WebSocket-Key : 보안을 위해 브라우저에서 생성한 키
Sec-WebSocket-Version : 웹 소켓 프로토콜 버전
-
-
extensions 와 subprotocols 헤더
extensions : 프로토콜 기능 확장
subprotocol : 서브 프로토콜 사용해 데이터 전송 시
클라이언트가 extensions, subprotocol 이용해 통신할 시 서버는 지원하는 extensions, subprotocol 응답 헤더에 담아 전달해야 함