Giter Site home page Giter Site logo

hyunjunhwang1994 / spring-websocket-webrtc-chatting Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sejonj/spring-websocket-webrtc-chatting

0.0 0.0 0.0 80.98 MB

SpringBoot WebSocket & WebRTC Chatting

JavaScript 5.03% Java 18.09% CSS 39.48% HTML 6.29% Dockerfile 0.22% Less 15.34% SCSS 15.54%

spring-websocket-webrtc-chatting's Introduction

SpringBoot WebSocket Chatting Project

Hits

0. Spring Boot 와 WebSocket 을 활용한 채팅 만들기 프로젝트

  • SpringBoot 기반 웹 소켓 채팅 및 Kurento Media Server 를 이용한 N:M 화상채팅
  • 상세한 코드 설명은 https://terianp.tistory.com/184 에서 확인 가능합니다.

브랜치별 설명

  • master : 기본 문자 채팅
  • master-Webrtc-jpa : 일반 채팅 + 실시간 화상 채팅, 화면 공유(P2P)
  • master-webrtc-kurento-jpa : kurento 미디어 서버를 활용한 webrtc 화상 채팅

1. 사용기술

  • Java 11
  • Spring Boot MVC
  • Gradle
  • AJAX
  • jquery
  • WebSocket & SocketJS
  • Stomp
  • WebRTC : P2P 실시간 화상 채팅, 화면 공유
  • Kurento Media Server : N:M 채팅을 위한 KMS 사용
  • Speech Recognition API(예정)
  • JPA - 추가 예정

2. 다이어그램

Chat.png

3. 구현 기능

  1. 기본 기능
    • 채팅방 생성
    • 채팅방 생성 시 중복검사
    • 채팅방 닉네임 선택
      • 닉네임 중복 시 임의의 숫자를 더해서 중복 안되도록
    • 채팅방 입장 & 퇴장 확인
    • 채팅 기능
      • RestAPI 기반 메시지 전송/수신
    • 채팅방 유저 리스트 & 유저 숫자 확인
  2. 채팅방 추가 기능
    • Amazon S3 기반으로 하는 채팅방 파일 업로드&다운로드
      • jquery, ajax 활용
    • 채팅방 암호화 - 09.12 완료
    • 채팅방 삭제
      • 채팅방 삭제 시 해당 채팅방 안에 있는 파일들도 S3 에서 함께 삭제
    • 채팅방 유저 인원 설정
      • 인원 제한 시 제한 된 인원만 채팅 참여 가능
  3. 화상채팅 기능 - WebRTC
    • WebRTC 화상 채팅
      • P2P 기반 음성&영상 채팅, 화면 공유 기능
      • 양방향 화면 공유
  • KMS : Kurento Media Server
    • 쿠렌토 미디어 서버를 사용한 N:M 채팅
    • 양방향 화면 공유

5. 구동방법

  1. Server Installation
  • Kurento Media Server 설치
  • turn Server 설치 : coturn
  • Kurento Media Server 사용시 환경변수 설정 필요 : -Dkms.url=ws://[KMS IP]:[PORT]/kurento
  1. JAR Build
  • java -Dkms.url=ws://[KMS IP]:[PORT]/kurento -jar jar파일명
  1. Docker Container
  • DockerFile 생성
- ## 베이스 이미지 + 이미지 별칭
FROM openjdk:8-jdk-alpine AS builder
# gradlew 복사
COPY gradlew .
# gradle 복사
COPY gradle gradle
# build.gradle 복사
COPY build.gradle .
# settings.gradle 복사
COPY settings.gradle .
# 웹 어플리케이션 소스 복사
COPY src src

# gradlew 실행권한 부여
RUN chmod +x ./gradlew
# gradlew를 사용하여 실행 가능한 jar 파일 생성
RUN ./gradlew bootJar

# 베이스 이미지
FROM openjdk:8-jdk-alpine
# builder 이미지에서 build/libs/*.jar 파일을 app.jar로 복사
COPY --from=builder build/libs/*.jar app.jar

# 컨테이너 Port 노출
EXPOSE 8443

# JAVA 옵션 설정
ENV JAVA_OPTS="-Dkms.url=ws://<KMS IP>:<PORT>/kurento"

# jar 파일 실행
#ENTRYPOINT ["java", "-jar","/app.jar"]
ENTRYPOINT java ${JAVA_OPTS} -jar /app.jar

6. 배포 주소

임시 : https://chat-for-you.onrender.com/

7. 구동 화면

ChatForYou.gif

Reference

https://github.com/Benkoff/WebRTC-SS

https://github.com/codejs-kr/webrtc-lab

https://doc-kurento.readthedocs.io/en/latest/index.html

spring-websocket-webrtc-chatting's People

Contributors

sejonj avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.