[3. Vert.x 동작 코드 작성 및 스프링 연결(?)]


Vert.x는 독립적인 애플리케이션으로 구성할 수도 있고 

스프링+Vert.x 처럼 Embedded 형태로 구성할 수도 있습니다


저는 Embedded 형태로 작성을 하였구요

자세한 방법은 [http://vertx.io] 나 

백기선님의 강의 영상[http://devon.daum.net/2012/session/b3#.Uw1du-N_tWA]을 봐주시면 됩니다


ㅇ VertxSample 클래스

package com.spring.vertx.controller;


import org.vertx.java.core.Handler;

import org.vertx.java.core.Vertx;

import org.vertx.java.core.http.HttpServer;

import org.vertx.java.core.json.JsonObject;


import com.nhncorp.mods.socket.io.SocketIOServer;

import com.nhncorp.mods.socket.io.SocketIOSocket;

import com.nhncorp.mods.socket.io.impl.DefaultSocketIOServer;

import com.nhncorp.mods.socket.io.spring.DefaultEmbeddableVerticle;


public class VertxSample extends DefaultEmbeddableVerticle {

private static SocketIOServer io = null;


@Override

public void start(Vertx vertx) {

int port = 12345;

HttpServer server = vertx.createHttpServer();

io = new DefaultSocketIOServer(vertx, server);

io.sockets().onConnection(new Handler<SocketIOSocket>() {

public void handle(final SocketIOSocket socket) {

socket.on("msg", new Handler<JsonObject>() {

public void handle(JsonObject event) {

System.out.println("handler ::: " + event.getString("msg"));

io.sockets().emit("response", event);

}

});

}

});

server.listen(port);

}

}


VertxSample 클래스를 그냥 controller 패키지 안에 넣었습니다 ㅎㅎ


간략하게 설명하자면... 

- HttpServer 생성 : HttpServer server = vertx.createHttpServer()

- Connection 이벤트 연결 : io.sockets().onConnection()

- 특정 키 명으로 요청시 동작할 이벤트 연결 : socket.on() 

- 모든 클라이언트로 메세지 전달 : io.sockets().emit()


순수 Vert.x 모듈만 가지고 작성을 하려면 굉장히 힘들텐데

백기선님께서 mod-socket-io 라는 좋은 모듈을 만들어 주셔서 위처럼 간단하게 구현이 가능합니다


이제 위 클래스를 스프링 프로젝트가 로드될때 같이 실행시켜 주기만 하면 됩니다

vertx-servlet.xml 에 bean 으로 선언만 해주시면 프로젝트가 로드될때 같이 실행이 됩니다


그래서 2장에서 작성했던 vertx-servlet.xml 에서 주석처리 했던 것을 풀어 주시면 됩니다

<bean id="vertxSample" class="com.spring.vertx.controller.VertxSample" />


서버 쪽 구성은 이제 끝났습니다 


다음 장에서는 클라이언트에서 socket.io.js 를 사용하여 요청 및 출력하는 부분을 만들어 보도록 하겠습니다



Posted by 꼬렙
: