Реализация сигналинга и обмена ключами
This commit is contained in:
@@ -74,8 +74,12 @@ export function Call(props: CallProps) {
|
||||
{callState == CallState.CONNECTING && (<Text fz={14} c={'#FFF'}>Connecting...</Text>)}
|
||||
{callState == CallState.INCOMING && (<Text fz={14} c={'#FFF'}>Incoming call...</Text>)}
|
||||
{callState == CallState.KEY_EXCHANGE && (<Text fz={14} c={'#FFF'}>Exchanging encryption keys...</Text>)}
|
||||
{callState == CallState.WEB_RTC_EXCHANGE && (<Text fz={14} c={'#FFF'}>Exchanging encryption keys...</Text>)}
|
||||
<Flex gap={'xl'} align={'center'} justify={'center'} mt={'xl'}>
|
||||
{callState == CallState.ACTIVE || callState == CallState.CONNECTING || callState == CallState.KEY_EXCHANGE && (
|
||||
{(callState == CallState.ACTIVE
|
||||
|| callState == CallState.WEB_RTC_EXCHANGE
|
||||
|| callState == CallState.CONNECTING
|
||||
|| callState == CallState.KEY_EXCHANGE) && (
|
||||
<>
|
||||
<Box w={50} onClick={() => setSound(!sound)} style={{
|
||||
borderRadius: 25,
|
||||
|
||||
@@ -26,6 +26,7 @@ export interface CallContextValue {
|
||||
export enum CallState {
|
||||
CONNECTING,
|
||||
KEY_EXCHANGE,
|
||||
WEB_RTC_EXCHANGE,
|
||||
ACTIVE,
|
||||
ENDED,
|
||||
INCOMING
|
||||
@@ -128,28 +129,6 @@ export function CallProvider(props : CallProviderProps) {
|
||||
info("Generated shared secret for call session: " + Buffer.from(computedSharedSecret).toString('hex'));
|
||||
setSharedSecret(Buffer.from(computedSharedSecret).toString('hex'));
|
||||
}
|
||||
if(signalType == SignalType.OFFER){
|
||||
const offerJson = packet.getOffer();
|
||||
if(!offerJson || !peerConnectionRef.current){
|
||||
info("Received offer but peer connection is not ready");
|
||||
return;
|
||||
}
|
||||
|
||||
handleOffer(offerJson);
|
||||
}
|
||||
|
||||
if(signalType == SignalType.ANSWER){
|
||||
const answerJson = packet.getAnswer();
|
||||
if(!answerJson || !peerConnectionRef.current){
|
||||
info("Received answer but peer connection is not ready");
|
||||
return;
|
||||
}
|
||||
|
||||
handleAnswer(answerJson);
|
||||
}
|
||||
if(signalType == SignalType.ACTIVE_CALL) {
|
||||
setCallState(CallState.ACTIVE);
|
||||
}
|
||||
}, [activeCall, sessionKeys]);
|
||||
|
||||
const generateSessionKeys = () => {
|
||||
|
||||
@@ -5,12 +5,12 @@ export enum SignalType {
|
||||
CALL = 0,
|
||||
KEY_EXCHANGE = 1,
|
||||
ACTIVE_CALL = 2,
|
||||
END_CALL = 3,
|
||||
OFFER = 4,
|
||||
ANSWER = 5,
|
||||
ICE_CONFIG = 6
|
||||
END_CALL = 3
|
||||
}
|
||||
|
||||
/**
|
||||
* Пакет сигналинга, для сигналов WebRTC используется отдельный пакет 27 PacketWebRTCExchange
|
||||
*/
|
||||
export class PacketSignal extends Packet {
|
||||
|
||||
private src: string = "";
|
||||
|
||||
Reference in New Issue
Block a user