웹 프런트 사이드는 jQuery+Bootstrap에 WebSocket을 붙여서 push로 채팅 메시지를 받도록 해봤다.
WebSocket으로 주고받는 데이터는 JSON으로 변환해서 처리했다.
서버 사이드는 Spring을 embedded jetty위에 올려서 따로 war로 패키징해서 WAS위에 올릴 필요없이 jar 실행하면 바로 뜨게 했다.
접속된 사용자들에게 채팅 메시지를 뿌리는 방법으로는 ActiveMQ를 embed로 올려서 처리했다.
JSON 변환은 JSONObject 라이브러리를 사용했고 WebSocket 처리는 java-websocket 라이브러리를 사용했다.
확실히 각각 세부 컴포넌트들을 직접 구현하는 것 보다 만들어진 오픈소스들 적재적소에 잘 갖다붙이는게 생산성이 좋은 것 같다.
간단한 채팅 페이지 치고는 오버 테크놀로지인 면이 있는 것 같지만 앞으로 몇가지 기능들을 더 붙여볼 생각으로 이렇게 아키텍처를 짰다.
C/C++로 퍼포먼스를 극한까지 끌어내거나 임베디드 프로그래밍 아니고 요즘 서버단 프로그램들은 잘 만들어져있는 솔루션들을 적재적소에 가져다 붙이는 glue 형 프로그래밍이 트렌드라고 생각한다.
확장성을 생각하고 구성했다. 주고받은 메시지를 저장하려면 ActiveMQ에 PersistanceAdapter만 입맛에 맞게 붙여주면 되고 JSON으로 변환했기 때문에 일반 메시지가 아닌 데이터들도 형식에 구애받지 않고 전달하기 쉽다.
https://code.구글.com/p/middleware-base-on-eventbus/source/browse/PresentationChat
굿이다욧
아이고의미업다
그냥 node.js socket.io 쓰시면 될 것을..