Vert.x

[Vert.x] Vertx Websocket Client 만들기

Jeong Jeon
반응형

필자는 타 기업 연동시 필요한 데몬을 만들기위해 사용하였다.

vertx로 Websocket 서버를 만들수 있지만 오늘은 websocket Client 부분만 기록하려고 한다.

 

아래 코드 중 연결 메서드 부분만 참고하면 될것같다.

추가적으로 workerVerticle로 websocket을 사용해도 되는지 더 찾아봐야하니.. 일단 일반 Verticle로 사용하자..!

추가적인 내용은 조금더 알아보고...! 수정하려고한다.

@Configuration
@PropertySource("classpath:config/${spring.profiles.active}.redis.properties") //설정값들을 읽어오려고 사용
@Verticle(instance = 1, isWorker = true, poolSize = 100) //workerVerticle로 사용하여서..
public class SocketVerticle extends AbstractVerticle {

	private NetClient client;
	private NetSocket socket;

	@Override
	public void start() throws Exception {
        doConnection();
	}

	@Override
	public void stop() throws Exception {
		System.out.println("[ daemon process is daed now : "+ new Date() + "]");
		// TODO Auto-generated method stub
		super.stop();
	}

	/**
	 * Socket 연결 메서드
	 */
	public void doConnection() {
		System.out.println("[ Trying to Connection ]");
		NetClientOptions options = new NetClientOptions();
        
		options.setTcpNoDelay(true);
        //ping 날리는거라 생각하면 된다.
		options.setTcpKeepAlive(false);
		//재연결 시도할 횟수
//		options.setReconnectAttempts(10);
		//재연결 interval
		options.setReconnectInterval(500);

		//client 해제 후 재연결
		if(client !=null) {
			client.close();
		}

        client = vertx.createNetClient(options);
		client.connect(port, host,asyncResult->{
			//isConnected
		    if(asyncResult.succeeded()){
		    	 socket = asyncResult.result();
		    	 System.out.println("[ socket is connected ]");
                 socket.handler(recvBuffer->{
                        //로직~
                        
                        //만약 socket전송을 하고싶다면
                        socket.write("내용");
                        
                 });

                 socket.closeHandler(closerst->{
                        	System.out.println("[ socket is closed ]");
                        	doConnection();
                 });
		    }else{
		        //fail
		        System.out.println("[ connectFail ]");
		        //뭐든 필요한 로직
		        doConnection();
		    }
		});
	}
}
반응형

'Vert.x' 카테고리의 다른 글

[Vert.x] Vert.x의 EventBus 사용하기  (0) 2021.07.29
[Vert.x] Vert.x란? Vert.x 개념 잡기  (0) 2021.04.26