2011년 5월 23일 월요일

Stomp On Web Sockets

원문: http://jmesnil.net/stomp-websocket/doc/

What is Stomp?
Stomp은 간단한 텍스트 지향 메시징 프로토콜 입니다. 이것은 Stom client가 Stom Message Broker와 상호 정보교환이 가능하도록 정의하고 있습니다.

Web Socket?
HTML5에 추가된 기능으로 브라우저가 화면 내에서 Socket 통신이 가능하도록 하는 기능입니다. 여기서 Socket은 우리가 흔히 아는 HTTP 프로토콜이 아니며 WS(Web Socket) 프로토콜입니다.

Server
HornetQ(2.0이상) 또는 ActiveMQ(5.4 이상)에서 Stomp을 지원합니다. 여기서는 HornetQ을 사용하도록 하겠습니다.

HornetQ 최신 버전(현재 2.1.2 Final): Open Source JMS Engine from JBoss
http://www.jboss.org/hornetq/downloads

설치이 후 Stomp  Example 실행
{HornetQ_HOME}/bin/run.sh(or run.bat) ../examples/jms/stomp-websockets/server0

출력 로그 중 61614 Port로 Web Sorcket Stomp Listener가 실행되어 있는걸 확인합니다.
[main] 11:39:16,204 INFO [org.hornetq.core.remoting.impl.netty.NettyAcceptor]  Started Netty Acceptor version 3.2.1.Final-r2319 localhost:61614 for STOMP_WS protocol


HTML5을 지원하는 브라우저를 이용하여 URL ws://localhost:61614/stomp에 접근이 가능합니다.

Test Code
{HornetQ_HOME}/example/jms/stomp-websockets/chat 폴더에 Test Client Code가 있습니다.
Code는  jQuery을 이용하고 있습니다.
  • chat.css
  • chat.js
  • index.html
  • stomp.js


Create a Stomp client
URL은 WS 프로토콜이어야 합니다.
var url = "ws://localhost:61614/stomp";
var client =
Stomp.client(url);


Connection to the Server
예제 코드에서는 login, passcode 모두 quest로 hornetq-users.xml에 등록되어 있는 사용자입니다.
client.connect(login, passcode, connect_callback);

connect_callback = function() {
   // called back after the client is connected and authenticated to the Stomp server
 };


Send Messages
Server로 Message을 전달하는 부분입니다. “jms.topic.chat”은 hornet1-jms.xml에 등록되어 있는 Topic 입니다.
client.send("jms.topic.chat", {priority: 9}, "Hello, Stomp");


Subscribe and Receive Messages
Server의 chat Topic으로 부터 메시지를 받아 message body에 출력합니다.
id = client.subscribe("jms.topic.chat", callback);
callback = function(message) {
   // called when the client receives a Stomp message from the server
   if (message.body) {
     alert("got message with body " + message.body)
   } else {
     alert("got empty message");
   }
 });


Test Code 실행
Test Code “index.html”은 HTML5 실행이 가능한 브라우저(크롬, 파이어폭스, 사파리)에서 실행하기바랍니다.
Server 정보가 기본설정에서 변경되었다면 수정한 후 “Connect”,  우측에 Web Socket 연결 정보가 출력 됩니다.

Web Socket연결 이후 하단에 텍스트를 입력하고 “Enter”키를 누르면 Web Socket으로 HornetQ JMS Server로 Message가 전달되고 바로 Web Socket으로 브라우저가 Message을 받아 Message Body에 출력하여줍니다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...