320x100 728x90 분류 전체보기152 WebSocket으로 실시간 채팅 구현하기.(springboot) 오늘은 웹소켓을 이용해서 실시간 채팅을 구현하면서 공부한 내용을 기록한다. 일단 웹소켓에 대해 잘 모른다면 여기를 참고하자 웹소켓은 클라이언트에서 주기적으로 서버 측에 데이터 확인 요청을 하는 polling 기법과 달리 새로운 데이터가 들어오면 먼저 서버가 클라이언트에게 데이터를 전송하는 기술이다. 기존에 client 와 server의 관계는 서버는 가동중이고 클라이언트에게 리소스를 줄 준비를 한다. 이후 클라이언트가 서버에 요청을 해서 html 등 여러 리소스를 받아 브라우저에 표시했다. 즉, 무조건적인 클라이언트의 요청이 먼저 있어야 서버가 그에 응답하는 방식이었다. 하지만 html5에서 등장한 웹소켓은 위에 언급했듯 서버가 클라이언트에게 먼저 데이터를 주는 역할을 한다. (데이터가 있으면) 이런 기.. 2021. 4. 13. Error] Could not create connection to database server. spring.datasource.url=jdbc:mysql://localhost:3306/{schemaName}?serverTimezone=UTC&characterEncoding=UTF-8 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.password=1234 서버타임존을 한국 시간으로 되야하는게 아닌가 하고 KST로 했었는데, 오류가 발생 UTC로 바꾸고 해결 참고 : https://higugu.tistory.com/entry/commysqljdbcexceptionsjdbc4MySQLNonTransientConnectionException-Could-n.. 2021. 4. 13. Could not initialize class org.codehaus.groovy.runtime.InvokerHelper gradle wrapper로 빌드를 하려다가 위와 같은 오류를 만났다. 오류의 원인은 자바를 14버전을 사용하다가 gradle 버전이 너무 낮아서 오류가 났었다. 혼자 데모프로젝트 만든다고 14로 바꿨다가 다시 안바꿔서 났던 오류였다. 자바나 gradle 둘 중 하나의 버전을 조정해주면 된다. 2021. 3. 12. NPE의 대처 방안 Optional 자바로 개발을 하다 보니 타입에 대한 강제성 때문에 곤란한 적이 한두 번이 아니다. 이런 점은 분명 데이터의 무결성을 지켜준다는 점에선 굉장히 이득이지만, 개발을 하면서 귀찮은 것이 한 둘이 아니다. 그리고 객체나 파라미터를 가지고 null이나 빈 문자열을 체크할 때가 많다. if(student == null){ doSomething(); }else{ doSomething(); } 예를 들면 이런 경우다. 혹은 save(student) 와 같은 경우에 NPE가 발생하는 등, 수많은 경우에서 객체가 null일 때, Exception을 발생시키는 게 아니라 값이 없음을 표현하고 없을 때, 로직을 처리하는 방안을 마련하는 게 좋다. Exception을 발생시키는 건 썩 좋은 상황은 아니기 때문이다. Optio.. 2021. 3. 1. 이전 1 ··· 14 15 16 17 18 19 20 ··· 38 다음 300x250 320x100