프로젝트 소개

Element Call은 Element가 개발한 Matrix 프로토콜 기반의 화상 회의 애플리케이션입니다. 분산형이자 연합형 화상 회의 솔루션으로 설명되며, LiveKit을 백엔드(MSC4195)로 사용하는 MatrixRTC(MSC4143)를 기반으로 합니다. README에 설명된 주요 기능: - 중앙 권한 없이 Matrix 홈서버 간 분산 및 연합 운영. - 종단 간 암호화 통화. - 세 가지 사용 모드: 독립 실행형 웹 앱, Matrix 클라이언트(Element Web, iOS 및 Android의 Element X)에 내장된 위젯, 호스트 애플리케이션 내에 마운트하기 위한 실험적 React 컴포넌트 라이브러리. - WebRTC 기반으로 참가자에게 추가 소프트웨어가 필요 없음. - 대규모 회의를 위한 LiveKit SFU를 통한 확장성. - 손 들기 및 이모지 반응과 같은 기능. 배포 및 패키징: 전체 패키지는 정적 웹 페이지로 독립 실행형 및 위젯 모드를 지원합니다. 임베디드 패키지는 메신저 앱과 함께 번들로 제공되는 위젯 모드용입니다. 컴포넌트 패키지(실험적)는 Element Call을 React 컴포넌트로 빌드합니다. 컴포넌트 빌드는 스타일을 루트 요소로 범위를 지정하고, 레이아웃에 컨테이너 쿼리를 지원하며, 영어를 번들하고 다른 로케일을 요청 시 로드하며, 언어 및 테마 props를 허용합니다. 호스트는 렌더링 전에 initializeElementCall(config)를 호출해야 하며, Matrix 클라이언트, roomId, intent, 선택적 config 및 hostBridge를 제공합니다. 호스트는 ref 핸들을 통해 join, hangUp 및 setDeviceMute를 발행합니다. 이 패키지는 아직 게시되지 않았으며 git 의존성으로 설치됩니다. 자체 호스팅: 자체 호스팅 가이드가 참조됩니다. 각 배포에는 LiveKit 서버 형태의 MatrixRTC 전송이 필요합니다. 전송 검색은 GET /_matrix/client/unstable/org.matrix.msc4143/rtc/transports 엔드포인트를 사용하며, livekit_service_url이 MatrixRTC 인증 서비스를 가리키는 livekit 유형의 rtc_transports 항목을 반환합니다. 백엔드 선택: 참가자는 통화 멤버 상태 이벤트에서 org.matrix.msc4143.rtc_foci를 통해 검색된 전송을 제안합니다. LiveKit의 경우 첫 번째로 참여한 참가자가 foci_preferred를 통해 백엔드를 정의합니다. 그런 다음 인증 서비스는 LiveKit SFU WebSocket URL과 액세스 JWT를 제공합니다. 개발: 의존성에는 Node.js, Corepack, 백엔드용 Docker 및 Compose가 포함됩니다. 프론트엔드 설정은 corepack enable, pnpm install, config/config.devenv.json에서 복사한 로컬 구성, pnpm dev를 사용합니다. docker-compose-dev.yml은 Synapse 홈서버, MatrixRTC 인증 서비스, LiveKit SFU, localhost 인증 기관 및 TLS 리버스 프록시로 구성된 로컬 스택을 시작합니다. 테스트 비밀을 사용하며 공개 인터넷에 노출되어서는 안 됩니다. 테스트는 Vitest(-u로 스냅샷 업데이트)와 Playwright를 사용하며, 포트 3001에 컴포넌트 하네스가 있습니다. 번역은 Localazy를 통해 관리되며, 새 번역 키는 pnpm i18n을 실행하고 locales/en/app.json을 편집하여 추가합니다. 라이선스: New Vector Ltd(Element)가 AGPL-3.0 또는 유료 Element 상업용 라이선스로 이중 라이선스를 제공합니다.