본문 바로가기

전체 글103

Spring Boot 일정시간마다 실행시키기 @EnableScheduling 스프링 부트에서는 일정시간마다 실행을 시키는 어노테이션을 메인함수에 선언을 해놓으면 스케줄링을 사용할 수 있다. 이번 프로젝트에서 이 기능이 필요했던 이유는 방송 송출이 잘 되고 있는지에 대한 감시를 옵저빙 서버에서 해야한다. (네트워크 환경이 급격하게 바뀌는 경우에는 Websocket이 끊겨도 끊긴지 모르고 그 룸에 대한 정보와 미디어 송출 라인이 그대로 남아있다.) 따라서, Scheduling을 이용해 일정시간마다 Data가 미디어서버로 잘 오고 있는지를 체크해야한다. 사용방법은 간단하다.(달아놓은 링크에 더 자세한 설명이 있으며 여기서는 일정 작업이 끝난 후 일정시간 마다 작업을 반복하는 것만 쓴다.) @EnableScheduling 어노테이션을 달고 사용하고자 하는.. 2021. 2. 3.
Spring-boot "Handshake failed due to invalid Upgrade header: null" Error (Spring boot Websocket 연결 에러) Handshake failed due to invalid Upgrade header: null? 회사에서 제공해준 EC2 클라우드 환경에서 Websocket을 연결하려고 할 때에 발생했던 오류였다. 현재 구축되어 있는 환경의 대략적인 그림은 다음과 같다. 프로젝트는 앞선 글들을 보면 알 수 있듯이 WebRTC를 주 기술 스택으로 하는 프로젝트여서 반드시 HTTPS를 통한 SSL 인증이 필수였고 그래서 회사에 인증서와 도메인을 함께 요청하였다. 그리고 EC2 서버 내에서 Nginx를 통해서 MSA로 나누어져 있는 각 서버들에게 리버시 프록시를 해주었다.(특히, Websocket의 경우 Header 업그레이드가 필요기 때문이며 SSL 인증이 필요한 포트는 반드시 ELB에서 설정해줘야 했기 때문이었다.) ng.. 2021. 2. 1.
SCTP 프로토콜(기존 프로토콜 TCP, UDP)(1) SCTP 프로토콜이란? 간단하게 이야기 해서 UDP와 TCP프로토콜의 장점을 합친 차세대 프로토콜이다. 멀티 스트리밍과 멀티 호밍을 지원하며 TCP에서 문제점으로 재기 되었던 TCP-SYN 공격 문제 및 "half-open closing" 문제들을 해결할 수 있다. VoIP 신호 전달 외에도 다중 미디어를 전송하는 웹 응용, WebRTC등의 프로토콜에서 사용된다. UDP와 TCP의 특징은? 위 설명에서 SCTP 프로토콜은 UDP와 TCP 프로토콜의 장점을 모은 차세대 프로토콜이라고 하였다. 그럼 여기서 이야기 하는 UDP TCP 프로토콜은 무엇일까? 세가지 프로토콜 모두 OSI 7계층에서 4 Layer인 Transport Layer에 속해있다. 3 Layer인 IP를 이용하여 실제 라우터로 연결되어있는 .. 2021. 1. 25.
Leetcode Coin Change Java class Solution { public int coinChange(int[] coins, int amount) { int[] dp = new int[amount+1]; Arrays.fill(dp,amount+1); dp[0]=0; int total=0; if(amount==0) return 0; for(int i=0; i 2021. 1. 20.