diff --git a/ts/session/utils/CallManager.ts b/ts/session/utils/CallManager.ts index 06ca19ada..4f800080d 100644 --- a/ts/session/utils/CallManager.ts +++ b/ts/session/utils/CallManager.ts @@ -4,6 +4,7 @@ import { CallMessage } from '../messages/outgoing/controlMessage/CallMessage'; import { ed25519Str } from '../onions/onionPath'; import { getMessageQueue } from '../sending'; import { PubKey } from '../types'; +import { sleepFor } from './Promise'; const incomingCall = ({ sender }: { sender: string }) => { return { type: 'incomingCall', payload: sender }; @@ -28,7 +29,7 @@ const callCache = new Map>(); let peerConnection: RTCPeerConnection | null; -const ENABLE_VIDEO = false; +const ENABLE_VIDEO = true; const configuration = { configuration: { @@ -44,6 +45,7 @@ const configuration = { ], }; +// tslint:disable-next-line: function-name export async function USER_callRecipient(recipient: string) { window?.log?.info(`starting call with ${ed25519Str(recipient)}..`); @@ -65,6 +67,7 @@ export async function USER_callRecipient(recipient: string) { // Peers connected! } }); + peerConnection.addEventListener('icecandidate', event => { // window.log.warn('event.candidate', event.candidate); @@ -129,15 +132,31 @@ const iceSenderDebouncer = _.debounce(async (recipient: string) => { const openMediaDevices = async () => { return navigator.mediaDevices.getUserMedia({ - // video: { - // width: 320, - // height: 240, - // }, - video: ENABLE_VIDEO, + // video: + video: ENABLE_VIDEO + ? { + width: 320, + height: 240, + } + : false, audio: true, }); }; +const printStatsLoop = async () => { + // tslint:disable-next-line: no-constant-condition + while (true) { + if (peerConnection) { + const stats = await peerConnection?.getStats(); + stats.forEach(st => { + console.warn('stat: ', st); + }); + } + await sleepFor(5000); + } +}; + +// tslint:disable-next-line: function-name export async function USER_acceptIncomingCallRequest(fromSender: string) { const msgCacheFromSender = callCache.get(fromSender); if (!msgCacheFromSender) { @@ -169,8 +188,22 @@ export async function USER_acceptIncomingCallRequest(fromSender: string) { window.log.info('USER_acceptIncomingCallRequest adding track ', track); peerConnection?.addTrack(track); }); + peerConnection.addEventListener('icecandidateerror', event => { + console.warn('icecandidateerror:', event); + }); + + peerConnection.addEventListener('negotiationneeded', event => { + console.warn('negotiationneeded:', event); + }); + peerConnection.addEventListener('signalingstatechange', event => { + console.warn('signalingstatechange:', event); + }); + + peerConnection.addEventListener('ontrack', event => { + console.warn('ontrack:', event); + }); peerConnection.addEventListener('connectionstatechange', _event => { - window.log.info('peerConnection?.connectionState:', peerConnection?.connectionState); + window.log.info('peerConnection?.connectionState:', peerConnection?.connectionState, _event); if (peerConnection?.connectionState === 'connected') { // Peers connected! } @@ -208,6 +241,7 @@ export async function USER_acceptIncomingCallRequest(fromSender: string) { window.inboxStore?.dispatch(answerCall({ sender: fromSender, sdps })); } +// tslint:disable-next-line: function-name export async function USER_rejectIncomingCallRequest(fromSender: string) { const endCallMessage = new CallMessage({ type: SignalService.CallMessage.Type.END_CALL, @@ -298,3 +332,4 @@ export async function handleOtherCallMessage( ) { callCache.get(sender)?.push(callMessage); } +void printStatsLoop();