개발 가이드

날짜
배정
상태

인증

1:1 통화

1:1 통화를 위해서는 Caller와 Callee간에 동일한 이름의 약속된 채팅룸 이름을 통해 HyperCall에 접속합니다. 먼저 접속한 사용자가 Caller가 되며, 첫 join시에 채팅룸을 생성하며 Callee를 기다리게 됩니다. 이후 Callee가 접속하면 대화가 시작되며, 상호간에 비디오 및 오디오 스트리밍 데이터가 교환됩니다.
Caller
var call = HyperCall.create(); call.join("userId1", "roomName");
Dart
복사
Callee
var call = HyperCall.create(); call.join("userId2", "roomName");
Dart
복사

그룹 통화

그룹통화도 1:1통화와 동일한 방식으로 동작할수 있습니다. 다수의 사용자간에 동일한 채팅룸 사용으로 손쉽게 그룹통화를 할 수 있습니다.
User1
var call = HyperCall.create(); call.join("userId1", "roomName");
Dart
복사
User2
var call = HyperCall.create(); call.join("userId2", "roomName");
Dart
복사
User3
var call = HyperCall.create(); call.join("userId3", "roomName");
Dart
복사

텍스트 메시징

대화중인 채팅룸에 텍스트 메시지를 전송할 수 있습니다.
메시지 전송
var call = HyperCall.create(); call.join("userId1", "roomName"); // info에는 사용자앱에서 전달하고싶은 데이터를 Map<String, dynamic> 형태로 전달합니다 var info = { 'uid': "userId1", 'name': "senderName", 'text': "hello, everyone", }; call.message("userId1", "roomName", info); ... void _messageProcess(HyperMessage msg) async { // msg.data에는 var info = msg.data; var sender = info['name']; var text = info['text']; var uid = info['uid'] as String; }
Dart
복사
메시지 수신
var call = HyperCall.create(); // onMessage event listener 를 통해 텍스트 메시지가 도착했을때 실행할 handler를 지정할 수 있습니다. call.onMessage = _messageProcess; call.join("userId1", "roomName"); void _messageProcess(HyperMessage msg) async { // msg.data에는 HyperCall.message() 를 통해 전달한 info가 들어있습니다. var info = msg.data; var sender = info['name']; var text = info['text']; var uid = info['uid'] as String; print("${sender}: ${text}"); }
Dart
복사

상태에 따른 이벤트 처리

HyperCall의 간단한 코드만으로 기본적인 통신 및 방송이 가능 합니다. 사용자의 필요에 따라 UI처리 및 추가 작업이 필요한 경우가 발생 합니다. 아래의 다양한 이벤트 핸들러를 통해 보다 세부적인 제어가 가능합니다.
Hyperity Video는 화상통신에 적합한 event들을 가지고 있습니다. 이를 알아두면 각 상황 별 event를 활용하는데 도움이 됩니다. 이에 대한 내용은 아래를 참고하세요.

onConnect

서버 접속 및 채널 생성이 완료된 이후 호출되는 콜백입니다. 실질적으로 채널을 만들어 통화를 요청하는 Caller이거나 만들어진 채널에 접속하여 요청에 응답하는 Callee일때의 동작을 달리 하는 경우가 많으며 개발자가 Caller, Callee여부에 대한 상태를 관리해야 합니다.
Caller는 join()을 통해 채널을 새로 만들고 상대방이 입장하기를 기다립니다.
Callee는 join()을 통해 이미 만들어진 채널에 접속하게 됩니다. 이때 Caller가 만든 채널의 이름을 필수로 필요하게 됩니다. 정상적으로 완료되면 onConnect가 생기나, Callee라면 곧바로 발생하는 onComplete를 사용하는것을 권장합니다.
var call = HyperCall.create() ..onConnect = ((String channelId) { // Do something })
Dart
복사

onComplete

통신에만 사용됩니다. 상호간 연결이 완료 된후 미디어 전송이 가능해 졌을 때 호출 됩니다. 다른 사용자와 Peer 연결이 완료된 이후 호출되는 콜백입니다.
var call = HyperCall.create() ..onComplete = (() { // Do something })
Dart
복사

onDisconnect

상대방이 연결을 끊거나, close() 호출후 종료가 완료되면 호출됩니다.
MINE : 자신이 close() 를 통해 종료한 경우
OTHER : 상대방이 close() 를 통해 종료한 경우
OTHER_UNEXPECTED : 상대방이 끊어져서 연결이 종료된 경우
UNKNOWN : 에러에 의한 연결 종료, 기타 연결 종료 이유 불명확
var call = HyperCall.create() ..onDisconnect = ((String reason) { // Do something })
Dart
복사

onError

에러가 발생할 때 호출되는 콜백을 정의합니다. 연결이 종료되는 경우 에러 전달 후 onDisconnect가 호출 되므로, 시나리오에 따른 ux 처리는 onClose에서 진행되어야 합니다.
var call = HyperCall.create() ..onError = ((Error err) { // Do something })
Dart
복사

onMessage

연결된 peer 간에 메시지를 전달하는 경우 호출되는 콜백입니다.
// HyperMessage 는 hyperity_sdk_flutter 내에 정의되어있습니다. class HyperMessage { late String from; late String to; late Map<String, dynamic> data; } ... var call = HyperCall.create() ..onMessage = ((HyperMessage msg) { // Do something })
Dart
복사

카메라 On/Off

사용자의 카메라 스트림 전송을 끄거나 키고싶은 경우 아래의 turnCamera()를 통해 제어할 수 있습니다
var call = HyperCall.create(); ... call.turnCamera();
Dart
복사

카메라 전환

사용자 단말에 카메라가 여러개 장착되어있는 경우 아래 switchCamera를 통해 사용하고자 하는 카메라를 변경할 수 있습니다.
var call = HyperCall.create(); ... call.switchCamera();
Dart
복사

마이크 On/Off

사용자의 마이크 입력을 끄거나 키고싶은경우 turnMicrophone() 을 통해 제어할 수 있습니다
var call = HyperCall.create(); ... call.turnMicrophone();
Dart
복사