mod-socket-io를 사용하면 Verticle(Vert.x 기반 애플리케이션)을 스프링 기반 애플리케이션에 손쉽게 내장하여 사용할 수 있습니다.
32 | 33 |mod-socket-io가 들어있는 메이븐 저장소 설정을 pom.xml에 추가합니다.
33 |34 | <repositories> 35 | ... 36 | <repository> 37 | <id>nhn</id> 38 | <url>https://github.com/keesun/mvn-repo/raw/master</url> 39 | </repository> 40 | </repositories> 41 |42 |
mod-socket-io 라이브러리를 dependency에 추가합니다.
44 |45 | <dependency> 46 | <groupId>com.nhncorp</groupId> 47 | <artifactId>mod-socket-io</artifactId> 48 | <version>1.0.1</version> 49 | </dependency> 50 |51 |
DefaultEmbeddableVerticle을 상속받아 Verticle을 작성하고 빈으로 등록합니다.
54 | @Component
55 | public class SampleVerticle extends DefaultEmbeddableVerticle {
56 |
57 | @Override
58 | public void start(Vertx vertx) {
59 | HttpServer server = vertx.createHttpServer();
60 | SocketIOServer io = new DefaultSocketIOServer(vertx, server);
61 | io.sockets().onConnection(new Handler<SocketIOSocket>() {
62 | public void handle(final SocketIOSocket socket) {
63 | socket.emit("welcome");
64 | socket.on("echo", new Handler<JsonObject>() {
65 | public void handle(JsonObject msg) {
66 | socket.emit("echo", msg);
67 | }
68 | });
69 | }
70 | });
71 | server.listen(19999);
72 | }
73 | }
74 |
75 | 클라이언트를 작성합니다.
77 |
78 | var socket = io.connect("http://localhost:19999");
79 | socket.on('connect', function(){
80 | console.log('connected');
81 | });
82 |
83 | 스프링 웹 애플리케이션을 실행하면 Verticle도 실행되고 애플리케이션을 종료하면 Verticle로 종료됩니다.
85 | 86 | 87 | 91 |