토이 프로젝트/Spring&Java 갖고놀기28 Spring Boot Web Chatting : 스프링 부트로 실시간 화상 채팅 만들기(14) 실시간 CatchMind 게임 만들기 1. 시작하면서이번에는 비교적 빠르게? 글을 쓰게 되었습니다ㅎ 그거 아세요? catchmind 게임 만들겠다고 첫 포스팅을 작성한지 벌써 2달이 넘었습니다! 멋지게 2024 년 목표로 노션에 캐치마인드를 개발해보자 라고 적어두었던 것은 12월 31일 이니...아마 기획을 포함한 실제 개발은 5개월 정도가 흘렀지 않을까 생각됩니다. 조금의 잡설을 포함해서 이야기를 더 적어보자면 솔직히 3월 정도에는 '이런거 한다고 돈을 받는것도 아니고, 어디 좋은곳으로 스카웃 되는 것도 아니고 내가 대체 뭐하는거지?' 싶어서 현타가 조금 심하게 오기도 했던 것 같습니다. 말로는 이거는 나의 즐거움을 위해서, 나의 재미를 위해서 취미생활로 개발하는거야 라고 하더라도 일도 힘들고, 이직은 더 힘들고 하다보니 이게 과연 의미가.. 토이 프로젝트/Spring&Java 갖고놀기 2024. 5. 5. Spring Boot Web Chatting : 스프링 부트로 실시간 화상 채팅 만들기(13) minIO 배포 & 파일업로드/다운로드 구현하기(feat.minIO ssl 적용, mixed-content 에러 해결) 1. 시작하면서 1) 서버 정리 이번에는 좀 오래만에 프로젝트 일지를 쓰게되었습니다. 2023 회고록에서 언급했듯이 사실 최근에 제 프로젝트에 나름? 많은 일이 있었습니다. 특히 기존에 있던 openstack 와 kubernetes 시스템을 완전히 다 뒤집고 다시 처음부터 작업했습니다. 물론 할일이 없어서나 심심해서 혹은 공부하기 위해...한거는 절대 아니고ㅋㅋㅋ 기존에 라즈베리파이 2대에 openstack + kubernetes 를 배포하고 사용했었는데 해당 라즈베리파이 2대를 모두 처분해버리고, 기존의 시스템 전부를 미니pc 로 옮기게 되었습니다. 사실 라즈베리파이라는 한계 때문인지 제가 설치를 잘못해서 그런건지 모르지만 오픈스택에 컴포넌트를 추가하는 것도 조금 문제가 많았고, 성능, 반응도 조금 늦.. 토이 프로젝트/Spring&Java 갖고놀기 2024. 1. 7. Spring Boot Web Chatting : 스프링 부트로 실시간 화상 채팅 만들기(12) 접속 통계 모니터링 및 blacklist 차단(spring server) 1. 시작하면서 이번에는 그래도 오랜만이 아니네요...?ㅋㅋㅋㅋㅋ 최근에는 뭔가 개발속도가 빨라지도 버그 수정도 빨라지는 느낌이 나는 듯합니다. 이제 실무에 투입된지 거의 1년 정도되었으니 당연하다면 당연할 수도 있지만 그래도 왠지 모르게 신기하기도 합니다ㅎ 동시에 이전에 작성된 코드들을 보면서...우와 이걸 대체 왜 이렇게 짰지? 라는 생각도 들고, 이걸 대체 언제 고치지...? 라는 생각도 듭니다. 언젠가는 전체적인 리팩토링이 필요한데 이게 참 벌써부터 두려워요ㅠㅠ 그렇지만 제가 늘 하던대로 일단 기능부터 특히 제가 해보고 싶었던 기능들을 이것저것 마구마구 넣어볼 생각입니다. 일단 다 때려박고...지금부터 짜는 코드라도 어떻게 잘 짜면 나중에 할 일이 줄어들지 않을까? 하는 바램입니다. 이번에도 그런.. 토이 프로젝트/Spring&Java 갖고놀기 2023. 12. 1. Spring Boot Web Chatting : 스프링 부트로 실시간 화상 채팅 만들기 (11) Datachannel && 화면 제어 기능 추가 1. 시작하면서 오늘도 엄청나게 오랜만에 글을 쓰는 듯 합니다. 마지막 글을 보니 벌써 1달이 넘어갔네요...와 빠르다ㅠㅠ 물론 그래도 이번에는 그냥 놀기만 하지는 않았습니다!! 10월은 한달 내내 chatForYou 프로젝트의 기능을 추가하고 개선하고 하는 한 달이었습니다. 사실 기능 추가하고 개선하고 할 때마다 글을 쓸까했는데...세상에 너무 많아서 이거 다 쓰다가는 오히려 개선하는 작업에 시간 투자가 안될 듯하여 미루고 미루다가 이제야 글을 쓰게 되었습니다ㅠㅠㅠ 이번 글에서는 가장 중요하게 생각되는 두 가지! 바로 datachannel 을 사용한 채팅 기능과 각종 화면 제어 기능에 대해서만 설명하고 가겠습니다. 더 자세하게 뭐가 바뀌었고 뭐가 추가되었는가? 에 대해서는 아래 git 이슈 부분을 참고.. 토이 프로젝트/Spring&Java 갖고놀기 2023. 11. 11. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (10) 오디오만을 사용한 화상채팅 개발 & kubernetes 배포 1. 개발일지 : 오디오만을 사용한 화상채팅 정말 정말 오랜만에 화상채팅 프로젝트에 관해서 글을 쓰는 것 같습니다. 굉장히 오랜만에 프로젝트와 관련된 개발을 할 수 있어서 즐거웠던 것 같네요. 역시 내꺼 만드는게 진짜 제일 재미있어요ㅋㅋㅋ 오늘은 이전에 개발 목표로 잡았던 오디오만을 사용한 화상채팅 기능! 을 드디어 개발 완료했고, 동시에 외부 접속까지 가능하도록 kubernetes 를 사용하여 배포까지 완료했습니다. 이번 개발하면서 어려웠던 것은 역시나 화상채팅 js 와 관련된 부분이었습니다. 이번 개발에서는 특히 chatgpt 선생님의 도움을 많이 받았던 것 같습니다. 동시에 chatgpt 를 결코 맹신해서는 안되겠구나...하고 느꼈습니다. 특히 개발에 있어서는 양날의 검이라는 수식어가 딱 들어 맞는.. 토이 프로젝트/Spring&Java 갖고놀기 2023. 9. 17. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (9) Kurento 를 이용한 그룹 화상 채팅 코드 분석 0. 시작하면서 1) MediaServer 의 구현 - SFU 의 모습을 기억해두자. 특히 이 모습과 코드를 비교하면서 보면 더욱 이해가 쉽다. 2) 동작은 어떻게?? 대략 이런 느낌이구나하고 넘어가고, 아래의 코드를 보면서 더 자세한 내용을 확인한다. 1. roomMap 을 통해 전체 room 을 조회, 추가, 수정, 삭제 한다 2. KurentoRoom 을 통해 화상 채팅 방을 만든다. 3. KurentoRoomManager 를 통해 KurentoRoom 에 대한 자세한 관리 - 조회, 추가, 수정, 삭제 -를 한다. 4. KurentoRegistry 는 이런 room 에 접속한 유저 - kurentoUserSession - 를 관리한다. 5. KurentoUserSession webrtc 를 위해 .. 토이 프로젝트/Spring&Java 갖고놀기 2023. 1. 27. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (8) Kurento 를 이용한 그룹 화상 채팅&실시간 화면 공유 1. 시작하면서 드디어 기다리고 기다리던 Kurento 를 이용한 N:M 그룹 화상 채팅이 완료되었습니다! 사실 매번 이번 코딩은 너무 어려웠습니다 하고 시작했지만...이번에는 정말 최고 난이도 였던 것 같습니다. 이게 다른 것보다는 한글로 적혀있는 정보를 찾기가 너무 힘들어서 오류가 나거나 했을 때 해결하기가 정말 힘들었던 것 같습니다. 시간이 가장 많이 들어갔던 부분은 서버설정과 쿠렌토 미디어 서버와 연결하기 위한 코딩 부분이었습니다. 서버 설정에서는 Kurento Media Server - 쿠렌토 - 와 turn server - coturn - 을 설치한 후 spring 프로젝트와 연결시킬 때 정말 많이 오류가 발생했었습니다. 단순히 서버 설정이 잘못된 건지 java 쪽에서 쿠렌토 서버와 연결하는 .. 토이 프로젝트/Spring&Java 갖고놀기 2023. 1. 24. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (7) WebRTC 를 이용한 실시간 화면 공유 이전 글에 이어서 WebRTC 를 사용해서 실시간 화면 공유를 구현해보았습니다. 저번 글에 '화면 공유 기능 목표!!' 라고 이야기했던게 사실 오래 걸릴 줄 알았는데 의외로 금방? 끝났습니다ㅋㅋ 라고 이전에 글을 썼었는데...생각해보니 공유 되는 나의 화면을 나만 볼 수 있었고, 내 화면을 다른 사람이 보는 내가 생각했던 진짜 '화면 공유' 기능이 아니었다는 걸 깨달았습니다. 결국 빠르게 글을 잠금표시로 전환해두고 코드를 뜯어고치기 시작했습니다. 솔직히 금방 끝나서 다행이다! 했는데 결국 이렇게 또 한주가 가버렸네요ㅠ.ㅠ JS 부분만 고치면 되는거여서 Java 부분의 코드 수정은 전혀 없었습니다 코드는 언제나 처럼 git 참고!! https://github.com/SeJonJ/Spring-WebSocke.. 토이 프로젝트/Spring&Java 갖고놀기 2022. 10. 31. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (6) WebRTC 를 이용한 실시간 화상 채팅 구현하기(feat. https 인증서 적용) 1. 실시간 화상 채팅 구현하기! 사실 실시간 화상 채팅이고 뭐고 순서상 JPA 를 사용한 회원가입을 구현하는게 먼저였지만...갑자기 화상 채팅에 꽂혀버려서 구현해봤습니다ㅋㅋㅋㅋ 솔직히 이번에는 다른 것보다 어렵겠구나 라는 생각을 했었습니다. 왜냐하면 아주 단순하게 생각해도 화상 채팅을 구현하기 위해서는 클라이언트끼리의 화면 연결, 음성 연결 등등등 정말 생각하고 고려할게 많았기 때문입니다. 그래도 만들려보고 키보드를 두들겼던 가장 큰 이유는 이전 채팅처럼 쉬운 예제가 많이 있다고 생각했었기 때문입니다. 그러나 의외로 참고할 자료가 많이 없었고, 이 부분이 굉장히 큰 에러였던 것 같습니다ㅠㅠ 처음에 예제를 찾아봤을 때 대부분이 스프링 대신 node.js 로 구현한 경우가 많았습니다. 솔직히 중간부터는 나.. 토이 프로젝트/Spring&Java 갖고놀기 2022. 10. 29. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (5) OAuth2 를 활용한 소셜 로그인 10.29 추가 : 일반(문자) 채팅만 구현하는 코드는 git 의 master 브렌치를 참고해주시기 바랍니다. master-Webrtc-jpa 는 화상 채팅과 jpa 를 이용한 DB 연결을 포함하는 브렌치입니다. 소셜 로그인 후 실시간 채팅만들기 이제 저번 시간까지해서 실시간 채팅을 하기 위한 기본 요소들은 모두 만들었습니다. 이제는 조금 더 업그래이드 하기 위해서! 로그인 기능을 덧붙여볼까 합니다. 근데 언제나 하던 일반 로그인은 시시하고, 조금 색다르게 소셜 로그인 기능을 먼저 추가해볼까 합니다. 정확히는 소셜 로그인 시 아이디(닉네임)을 채팅명으로 만든 후 해당 닉네임으로 채팅을 할 수 있도록 기능을 추가하겠습니다. 단 이번에는 DB 에 회원 정보를 저장하지 않고 소셜 로그인을 하는 것 까지만! 하.. 토이 프로젝트/Spring&Java 갖고놀기 2022. 9. 21. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (4) 채팅방 비밀번호 설정, 인원수 제한, 삭제(feat. 업로드된 S3 파일 삭제) 10.29 추가 : 일반(문자) 채팅만 구현하는 코드는 git 의 master 브렌치를 참고해주시기 바랍니다. master-Webrtc-jpa 는 화상 채팅과 jpa 를 이용한 DB 연결을 포함하는 브렌치입니다. 시작하면서 - 지난번에 S3 파일 업로드 & 다운로드까지 완료하고 나니까 좀 더 여러가지 기능을 넣어보고 싶어서 채팅방에 관한 설정을 추가해보았다. - 구체적으로는 채팅방 생성 시 비밀번호 설정, 채팅방 인원수 제한과 채팅방 삭제 기능이다. 특히 삭제 기능의 경우 채팅방이 삭제되면 해당 채팅방에 올라온 파일도 필요가 없어짐으로 S3 에서 해당 채팅방에 관련된 모든 파일을 삭제하는 방식으로 코드를 작성하였다. - 이왕 이렇게 된거 최종적인 완성본은 카카오 오픈 채팅방의 그것처럼 만들어보려고 한다... 토이 프로젝트/Spring&Java 갖고놀기 2022. 9. 13. Spring Boot Web Chatting : 스프링 부트로 실시간 채팅 만들기 (3) S3 기반 채팅 파일 업로드 & 다운로드 10.29 추가 : 일반(문자) 채팅만 구현하는 코드는 git 의 master 브렌치를 참고해주시기 바랍니다. master-Webrtc-jpa 는 화상 채팅과 jpa 를 이용한 DB 연결을 포함하는 브렌치입니다. - 최근 스터디에서 파일 업로드와 관련된 프로젝트를 하자고 이야기가 나왔고, 이에 만들어두었던 채팅에 이어서 만들어보고 싶어서 부랴부랴 AWS S3 와 연동해서 S3 기반 파일 업로드를 구현하였다. - 원래는 S3의 bucket 만들기부터 시작해서 ACL 설정 등등 만져줄게 많은데 이것들은 담에 설명하기로 하고, 이번에는 코드만 정리하고 넘어가려고 한다. => 혹시나 필요하신 분들을 위해서 이 부분은 아래에 참고 사이트를 넣어두었으니 확인 부탁드립니다! - 아래의 추가된 모든 내용은 해당 git.. 토이 프로젝트/Spring&Java 갖고놀기 2022. 9. 7. 이전 1 2 3 다음 728x90 반응형