웹 서버가 클라이언트의 요청을 처리할 때 일반적으로 path와 query를 통해 호출되는 메소드를 분류한다면, 웹소켓은 태생부터가 기존 웹 동작 방식과 다르기 때문에 이 api 사용법에 있어서도 차이점이 생기는 것 같다.

connectionless이기 때문에 매 요청 시 api를 변경할 수 있는 일반 웹에 비해 웹소켓은 TCP와 마찬가지로 connection-oriented인 관계로 처음 연결 요청 외에는 웹소켓 자체 인터페이스만 갖고는 api를 변경할 수가 없다. (기존 http 인터페이스를 이용하면 되겠지만 이 경우 연결을 끊었다 붙였다… 웹소켓 왜 씀?)

웹소켓은 마치 TCP처럼 필요한 콜백 핸들러가 OnOpen, OnClose, OnMessage, OnError 네 가지 뿐이기 때문에 api마다 메소드를 붙이는 기존 웹 개발 방식과도 실질적인 코드 차이가 발생한다.

결론은 웹소켓은 query 사용하지 말고 TCP처럼 패킷을 정의하자.

Posted by OOJJRS
,