본문 바로가기

Project/기능 개발

Springboot로 Web Socket 상에서 STOMP 메시지 브로커 적용하기 개요 지난 포스팅에서는 특정 URL로 전달되는 웹소켓 요청을 처리하는 웹소켓 핸들러를 구현했습니다. 웹소켓 핸들러 내부에 컨커런트 해시맵 자료구조를 두고, 웹소켓 연결이 체결된 클라이언트의 세션을 관리했습니다. 하지만 이 방식은 다음의 단점이 존재했습니다. URL(채팅방) 마다 웹소켓 요청을 처리할 웹소켓 핸들러를 구현해 매핑해야 한다.메시지 인식에 문제가 없도록 클라이언트와 서버 간 전달할 데이터 형식을 정해야 한다.메시지를 전달하기 위한 웹소켓 세션 관리 로직(메시지 채널링)을 개발자가 직접 작성해야 한다.  이번 포스팅에서는 스프링이 제공하는 내장 심플 메시지 브로커를 사용해 1,2,3번 모두 해결해 보겠습니다. 그전에 Simple Message Broker는 STOMP 메시징 프로토콜을 사용하므로.. 더보기
Springboot로 Web Socket 서버 구축하기 개요 일반적인 채팅 애플리케이션은 상대방이 나에게 메시지를 전송하면, 내 화면에 즉시 메시지가 표시됩니다. HTTP 통신은 클라이언트와 서버 간 요청과 응답이 완료되면 연결을 끊어버리기 때문에, 상대방이 메시지를 전송했는지 안 했는지 알기 위해서는 새로고침을 해야만 합니다.  하지만 나에게 신규 메시지가 전송될 때마다 새로고침 하는 것은 우리가 원하는 방법이 아닐 겁니다. 이 문제를 해결하기 위해 사용할 수 있는 프로토콜은 바로 Web Socket인데요, 왜 그런지 살펴보도록 하겠습니다. Web Socket 특징 2가지 HTTP 통신과 비교했을 때 WebSocket 통신에서 두드러지는 특징이 2가지가 있습니다. 첫째, 클라이언트와 서버가 TCP 3-way 핸드셰이크로 연결을 체결한 후, 해당 연결을 끊지.. 더보기
Web3j 라이브러리를 활용한 이더리움 통신 Spring boot 프로젝트 개요 최근 블록체인 기술에 흥미가 생겼다. 빠르게 블록체인 생태계를 경험해보고 싶어 DApp을 개발해보려 한다. 흔히 DApp은 Truffle, Hardhat 프레임워크 상에서 Solidity 언어로 Smart Contract를 작성하고 배포한 뒤, 자바스크립트 라이브러리 web3.js를 통해 스마트 컨트랙트를 호출하여 동작한다.  하지만 이번 프로젝트는 블록체인 생태계에 대한 빠른 이해를 위해 진행하는 것이다. 따라서 Java 백엔드 개발을 해왔던 나에게 있어 개발 편의성 및 효율성을 따져, Web3j 라는 자바 진영 이더리움 라이브러리를 사용해보았다. 다음 프로젝트에서 Smart Contract를 작성해 Klaytn 블록체인의 Baobab 테스트넷에 배포하고, web3.js 자바스크립트 라이브러리로 .. 더보기
[프로젝트] 순수 자바로 웹 애플리케이션 서버(WAS) 구현하기 1. 개요 프로젝트 진행 동기 저는 여느 때와 다름없이 스프링을 학습하고 있었습니다. 그런데 문득 의문이 들었습니다. 어째서 아무 설정을 건드리지 않고도 프로젝트가 기본적으로 TCP/IP 계층의 8080 port를 사용하고 있는 것인지 Application 계층의 HTTP 메시지를 스펙을 따라 직접 파싱 하지 않고도 개발을 편리하게 할 수 있는지 위 궁금증을 해결하기 위해 구글링을 하던 중 Servlet 이라는 기술을 알게 되었습니다. 서블릿은 HTTP 요청 메시지를 읽어 들여 스펙에 맞게 파싱 하고, 응답을 내려줄 때도 스펙에 맞게 알아서 HTTP 응답 메시지를 작성해 준다는 것이었습니다. 그래서 서블릿 없이 순수한 자바로 WAS를 구현해보려 합니다. 프로젝트 달성 목표 개발한 웹 어플리케이션 서버(W.. 더보기