반응형
필자는 타 기업 연동시 필요한 데몬을 만들기위해 사용하였다.
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 |