4월, 2022의 게시물 표시

자율 프로젝트 start

이미지
프로젝트에서 적어도 안 써본 기술 하나는 써보자 라는 다짐하에 2학기 3번째 프로젝트, 자율 프로젝트가 시작되었다. 이번에는 유행했던 점프킹과 같은 장애물을 피해 올라가는 게임을 구현하려고 하는데 이걸 멀티접속이 가능하게 하려고 한다. 당연히 웹소켓이 필요하고 지금 껏 룸을 나누지 않고 단순 웹소켓만 사용해본 나로써는 새로운 도전이라고 할 수 있다. socket 과 websocket 일반적으로 socket 이라고 하면 tcp/ip socket을 의미한다. 그래서 이론적으로 가장 큰 차이점은 websocket은 http 레이어에서 작동하는 소켓으로 레이어가 다르다 라고 볼 수 있다.  기본적으로 http는 요청 후 응답을 보내는 단방향 통신인데 이걸 socket 처럼 쓰고 싶어서 만들어진 기술이라고 한다. 나같은 웹개발자는 그냥 이걸 쓰는게 맞는거 같고, 다만 브라우저 별로 못 쓰는 상황이 나와서 socket.io나 socketJS 같은 기술을 사용해서 이를 보완한다. STOMP  simple text oriented messaging protocol의 약자이며, 텍스트 기반의 프로토콜이다. websocket은 연결된 socket에게 data처리를 직접 다하는 반면, stomp는 subscriber, sender, broker를 따로 두어 처리를 하게 된다. subscriber(receive socket) : 채팅방에 입장하여 해당 채팅창을 구독, 즉 참여하고 있는 채팅창에 오는 메시지를 실시간으로 받아볼 수 있으려면 먼저 구독이 되어있어야 한다. sender(send socket) : 참여하고 있는 채팅창에 글을 써서 해당하는 주소로 메시지를 전달한다. broker : 연결된 socket들의 세션 관리를 해준다. 즉 subscriber를 구독한 채널에 연결시켜주고, sender가 그 채널에 메시지를 보내면 subscriber에게 전달해주는 중간 다리 역할을 한다. ChatController 에서 @MessageMapping("") @Send