diff --git a/app/providers/ProtocolProvider/protocol/packets/packet.signal.ts b/app/providers/ProtocolProvider/protocol/packets/packet.signal.ts deleted file mode 100644 index 54c86b2..0000000 --- a/app/providers/ProtocolProvider/protocol/packets/packet.signal.ts +++ /dev/null @@ -1,86 +0,0 @@ -import Packet from "../packet"; -import Stream from "../stream"; - -export enum SignalType { - CALL = 0, - KEY_EXCHANGE = 1, - ACTIVE_CALL = 2, - END_CALL = 3 -} - -/** - * Пакет сигналинга, для сигналов WebRTC используется отдельный пакет 27 PacketWebRTCExchange - */ -export class PacketSignal extends Packet { - - private src: string = ""; - /** - * Назначение - */ - private dst: string = ""; - /** - * Используется если SignalType == KEY_EXCHANGE, для идентификации сессии обмена ключами - */ - private sharedPublic: string = ""; - - private signalType: SignalType = SignalType.CALL; - - - public getPacketId(): number { - return 26; - } - - public _receive(stream: Stream): void { - this.signalType = stream.readInt8(); - this.src = stream.readString(); - this.dst = stream.readString(); - if(this.signalType == SignalType.KEY_EXCHANGE){ - this.sharedPublic = stream.readString(); - } - } - - public _send(): Promise | Stream { - const stream = new Stream(); - stream.writeInt16(this.getPacketId()); - stream.writeInt8(this.signalType); - stream.writeString(this.src); - stream.writeString(this.dst); - if(this.signalType == SignalType.KEY_EXCHANGE){ - stream.writeString(this.sharedPublic); - } - return stream; - } - - public setDst(dst: string) { - this.dst = dst; - } - - public setSharedPublic(sharedPublic: string) { - this.sharedPublic = sharedPublic; - } - - public setSignalType(signalType: SignalType) { - this.signalType = signalType; - } - - public getDst(): string { - return this.dst; - } - - public getSharedPublic(): string { - return this.sharedPublic; - } - - public getSignalType(): SignalType { - return this.signalType; - } - - public getSrc(): string { - return this.src; - } - - public setSrc(src: string) { - this.src = src; - } - -} \ No newline at end of file diff --git a/app/providers/ProtocolProvider/protocol/packets/packet.webrtc.ts b/app/providers/ProtocolProvider/protocol/packets/packet.webrtc.ts new file mode 100644 index 0000000..9a5ca74 --- /dev/null +++ b/app/providers/ProtocolProvider/protocol/packets/packet.webrtc.ts @@ -0,0 +1,52 @@ +import Packet from "../packet"; +import Stream from "../stream"; + +export enum WebRTCSignalType { + OFFER = 0, + ANSWER = 1, + ICE_CANDIDATE = 2 +} + +/** + * Пакет для обмена сигналами WebRTC, такими как оффер, ответ и ICE кандидаты. + * Используется на стадии WEB_RTC_EXCHANGE в сигналинге звонков. + */ +export class PacketWebRTC extends Packet { + + private signalType: WebRTCSignalType = WebRTCSignalType.OFFER; + private sdpOrCandidate: string = ""; + + public getPacketId(): number { + return 27; + } + + public _receive(stream: Stream): void { + this.signalType = stream.readInt8(); + this.sdpOrCandidate = stream.readString(); + } + + public _send(): Promise | Stream { + let stream = new Stream(); + stream.writeInt16(this.getPacketId()); + stream.writeInt8(this.signalType); + stream.writeString(this.sdpOrCandidate); + return stream; + } + + public setSignalType(type: WebRTCSignalType) { + this.signalType = type; + } + + public getSignalType(): WebRTCSignalType { + return this.signalType; + } + + public setSdpOrCandidate(data: string) { + this.sdpOrCandidate = data; + } + + public getSdpOrCandidate(): string { + return this.sdpOrCandidate; + } + +} \ No newline at end of file diff --git a/app/providers/ProtocolProvider/protocol/protocol.ts b/app/providers/ProtocolProvider/protocol/protocol.ts index 90d2fe0..439a03b 100644 --- a/app/providers/ProtocolProvider/protocol/protocol.ts +++ b/app/providers/ProtocolProvider/protocol/protocol.ts @@ -25,7 +25,7 @@ import { PacketDeviceNew } from "./packets/packet.device.new"; import { PacketDeviceList } from "./packets/packet.device.list"; import { PacketDeviceResolve } from "./packets/packet.device.resolve"; import { PacketSync } from "./packets/packet.sync"; -import { PacketSignal } from "./packets/packet.signal"; +import { PacketSignalPeer } from "./packets/packet.signal.peer"; export default class Protocol extends EventEmitter { private serverAddress: string; @@ -126,7 +126,7 @@ export default class Protocol extends EventEmitter { this._supportedPackets.set(0x17, new PacketDeviceList()); this._supportedPackets.set(0x18, new PacketDeviceResolve()); this._supportedPackets.set(25, new PacketSync()); - this._supportedPackets.set(26, new PacketSignal()); + this._supportedPackets.set(26, new PacketSignalPeer()); } private _findWaiters(packetId: number): ((packet: Packet) => void)[] {