Реализация сигналинга и обмена ключами

This commit is contained in:
RoyceDa
2026-03-02 18:53:15 +02:00
parent 7a89a3a307
commit e06d58facf
3 changed files with 10 additions and 27 deletions

View File

@@ -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,

View File

@@ -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 = () => {

View File

@@ -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 = "";