회원가입 | 고객센터 |
DESIGNONEX
디자인원엑스
DX마켓
PR리그
Q&A
지식공유N
공지사항
통계
로그인 회원가입
고객센터

MB WebRTC 1:1 화상 채팅 플러그인

D DX관리자
2026.08.17 00:51(수정됨) 6 0 2



MB Profile Extend + MB WebRTC 플러그인 매뉴얼

DesignOneX · designonex.com DXCMS v8.8.0+


개요

두 플러그인은 함께 동작합니다.

플러그인 역할
MB Profile Extend 회원 프로필 모달에 더보기 버튼 추가. 외부 플러그인이 기능을 자유롭게 확장할 수 있는 구조 제공
MB WebRTC 더보기 모달에 MB 화상채팅 항목 자동 등록. DX Socket 을 시그널링 서버로 활용하는 1:1 WebRTC 화상채팅


필수 조건

조건 설명
DXCMS v8.8.3 이상
DX Socket 플러그인 활성화 + API 키 발급 필수 (관리자 → 실시간 소켓 → API 키 관리)
HTTPS WebRTC 는 HTTPS 환경에서만 동작
index.php 수정 Permissions-Policy 헤더 추가 필수 (아래 참고)


설치

1. index.php 수정 (필수 — 안드로이드 크롬/삼성 브라우저 지원)

index.phpob_start(); 바로 다음에 추가합니다.

ob_start();

// Permissions-Policy: 카메라/마이크 허용 (안드로이드 Chrome WebRTC 필수)
if (!headers_sent()) {
    header('Permissions-Policy: camera=*, microphone=*');
}

이 헤더가 없으면 아이폰 사파리는 동작하지만 안드로이드 크롬/삼성 브라우저에서 카메라/마이크가 차단됩니다.


2. 파일 업로드

압축 해제 후 루트에 그대로 덮어씁니다.

plugins/
├── dx-socket/
│   └── socket-core.js.php  ← 기존 파일 교체
├── mb-profile-extend/
│   ├── plugin.json
│   ├── plugin.php
│   └── README.md
└── mb-webrtc/
    ├── plugin.json
    ├── plugin.php
    └── README.md


3. 플러그인 활성화

관리자
→ 플러그인
→ MB Profile Extend → 활성화
→ MB WebRTC → 활성화


4. DX Socket API 키 확인

관리자
→ 실시간 소켓
→ API 키 관리
→ 현재 도메인에 dxk_ 로 시작하는 키가 있는지 확인
→ 없으면 키 발급


사용 방법

화상채팅 시작 (발신)

1. 게시판 글 목록 또는 댓글에서 다른 회원의 이름 클릭
2. 프로필 모달 → [더보기 ...] 버튼 클릭
3. [MB 화상채팅] 항목 클릭
4. 카메라/마이크 권한 팝업 → 허용
5. 상대방이 수락하면 화상통화 시작

화상채팅 수락 (수신)

1. 상단에 수신 모달 표시됨
2. [수락] 버튼 클릭 → 화상통화 시작
   [거절] 버튼 클릭 → 거절 처리


화면 구성

프로필 모달 (더보기 버튼 위치)

┌─────────────────────────────┐
│  [아바타]  회원이름  Lv.8   │
│  가입일 · 최근접속           │
│  게시글  댓글  친구  포인트   │
├─────────────────────────────┤
│  [1:1채팅] [메모] [더보기]  │  ← 더보기 버튼 추가됨
│  [친구추가]      [차단]      │
│  [회원글 검색]               │
└─────────────────────────────┘

더보기 모달

┌─────────────────────────┐
│  더보기 — 홍길동        │
│─────────────────────────│
│ 📹  MB 화상채팅         │  ← MB WebRTC 자동 등록
│ (추후 확장 항목들...)    │
└─────────────────────────┘

화상채팅 화면

┌──────────────────────────────────────┐
│ 📹 홍길동  [연결됨]         00:00 [종료] │
├──────────────────────────────────────┤
│                                      │
│         상대방 화면 (메인)            │
│                              ┌─────┐ │
│                              │내화면│ │  ← 탭하면 좌/우 이동
│                              └─────┘ │
├──────────────────────────────────────┤
│   [🎤]  [📷]  [🖥]      [📵종료]    │
│  마이크 카메라 화면공유              │
└──────────────────────────────────────┘


컨트롤 버튼

버튼 기능
🎤 마이크 음소거 / 해제 토글
📷 카메라 카메라 끄기 / 켜기 토글
🖥 화면 공유 화면 공유 시작 / 중지
📵 종료 통화 종료 (상대방에게 알림)
내 화면 탭 PIP 위치 좌/우 이동


통화 흐름

발신자                    소켓 서버                   수신자
  │                          │                          │
  │── webrtc_invite ────────>│──────────────────────>  │
  │                          │           수신 모달 표시  │
  │  <── webrtc_invite_accept│<─────────────────────── │
  │                          │                          │
  │── webrtc_offer ─────────>│──────────────────────>  │
  │  <── webrtc_answer ──────│<─────────────────────── │
  │                          │                          │
  │<══════ P2P 직접 연결 (소켓 불필요) ══════════════════│
  │                          │                          │
  │── webrtc_end ───────────>│──────────────────────>  │


확장 개발

더보기 모달에 항목 추가

다른 플러그인에서 mb_profile_extend_items 훅으로 항목을 추가합니다.

// 다른 플러그인의 plugin.php 에 추가
dx_add_hook('mb_profile_extend_items', function($items, $memberId) {
    $items[] = array(
        'id'      => 'mb-remote',           // 고유 ID
        'icon'    => 'fa-solid fa-desktop', // Font Awesome 6 아이콘
        'label'   => 'MB 원격데스크톱',     // 표시 이름
        'color'   => '#3b82f6',             // 아이콘 색상
        'onclick' => 'mbRemoteOpen',        // JS 함수명
    );
    return $items;
});
// 해당 플러그인 JS 에 추가
window.mbRemoteOpen = function(memberId, label) {
    mbpCloseMore(); // 더보기 모달 닫기
    // 기능 실행
};


제공 전역 함수

함수 설명
mbpOpenMore(memberId, memberName) 더보기 모달 열기
mbpCloseMore() 더보기 모달 닫기
mbpItemClick(fnName, memberId, label) 항목 클릭 처리


브라우저 권한 안내

권한이 차단된 경우

화상채팅 버튼 클릭 시 권한 안내 모달이 표시됩니다.

브라우저 권한 허용 경로
Chrome (Android) 주소창 왼쪽 🔒 → 카메라/마이크 → 허용
삼성 인터넷 주소창 왼쪽 🔒 → 사이트 권한 → 허용
Safari (iOS) Safari → 이 웹사이트 설정 → 카메라/마이크 → 허용
Firefox 주소창 왼쪽 방패 → 권한 → 해제

안드로이드 시스템 설정

설정 → 개인 정보 보호
→ 카메라 액세스 → 켜기
→ 마이크 액세스 → 켜기


트러블슈팅

증상 원인 해결
더보기 버튼이 안 보임 MB Profile Extend 미활성화 플러그인 활성화 확인
화상채팅 항목이 없음 MB WebRTC 미활성화 또는 DX Socket 키 없음 플러그인 활성화 + API 키 발급
안드로이드에서 카메라 차단 Permissions-Policy 헤더 없음 index.php 수정
소켓 미연결 DX Socket 플러그인 미활성화 DX Socket 활성화 확인
상대방 화면이 안 나옴 P2P 연결 실패 (방화벽) STUN 서버 통신 허용 확인
30초 후 자동 취소 상대방이 응답 안 함 상대방 접속 상태 확인


파일 구성

plugins/
├── dx-socket/
│   └── socket-core.js.php     ← 커스텀 이벤트 위임 코드 추가본
│
├── mb-profile-extend/
│   ├── plugin.json            ← 플러그인 메타정보
│   ├── plugin.php             ← 더보기 버튼 인터셉터 + 훅 시스템
│   └── README.md
│
└── mb-webrtc/
    ├── plugin.json            ← 플러그인 메타정보
    ├── plugin.php             ← WebRTC UI + 시그널링 JS
    └── README.md


라이선스 

라이선스명 DesignOneX License (디자인원엑스 라이선스)
원천 소유 DesignOneX — designonex.com
재배포·판매 ❌  금지 (원천 소스 90% 이상 수정 시 재배포·판매 가능)
상업적 사용 ✅  상업적 프로젝트 제작에만 허용 (학습·개인 포트폴리오 포함)
플러그인 원천 plugin.php, core/, admin/ 자체의 재배포 및 판매 금지
보증 본 플러그인은 현재 상태 그대로 제공되며 어떠한 명시적·묵시적 보증도 없습니다.

 
🚫  plugin.php, core/, admin/ 디렉터리의 코드를 그대로 또는 일부 수정하여 재배포하거나 판매하는 행위는 엄격히 금지됩니다. 
🚫  DX CKEditor 4 Pro를 기반으로 제작한 에디터 서비스는 반드시 DesignOneX 라이선스 조건을 준수해야 합니다.
 
✅  상업적 프로젝트 제작 및 사용은 허용됩니다. (학습·개인 포트폴리오 포함)
✅  원천 소스를 90% 이상 수정한 경우 재배포·판매가 가능합니다.

첨부파일 1개 회원전용 500P

댓글2

D
DX관리자 2026.08.17 00:57
NotAllowedErrorPermissions Policy 가 카메라/마이크 접근을 허용하도록 설정되지 않은 경우에도 발생
즉 서버나 호스팅에서 퍼미션 권한을 지정해줘야 하는 것입니다.
이 정책은 안드로이드 정책에 포함되어져 있습니다.

필독
- 이 부분에서 에러가 발생하는 것은 직접 수정하셔야 합니다.
- DXCMS 8.8.3 버전 이상입니다.

처리방법

IIS (web.config): Permissions-Policy 헤더 추가
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Permissions-Policy"
             value="camera=*, microphone=*" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

Apache (.htaccess):
Header always set Permissions-Policy "camera=*, microphone=*"

DXCMS : 8.8.3에는 이 소스가 포함되어져 있습니다.
header('Permissions-Policy: camera=*, microphone=*');
 
D
DX관리자 2026.08.17 01:00
디자인원엑스에서 테스트를 할 수 있습니다.
대충 아는 분들에게 회원가입하라고 하시거나, 직접 회원가입을 하신 후, 알려주세요.

사용방법은 간단합니다.
프로필 클릭 -> 더보기 클릭 -> 화상채팅 신청 
로그인 후 댓글을 작성할 수 있습니다.
Plugin 31
41
전체 회원
1,556
전체 게시글
2,614
전체 댓글
21
오늘 방문
52,414
전체 방문
2
현재 접속
인기글 7일 이내
최신글
최신댓글
내 플레이리스트
플레이리스트가 비어있습니다
스튜디오 게시판에서
플레이리스트에 담기 버튼을
눌러보세요
목록
목록