Реализация нового протокола звонков
This commit is contained in:
@@ -6,9 +6,13 @@ export enum SignalType {
|
||||
KEY_EXCHANGE = 1,
|
||||
ACTIVE_CALL = 2,
|
||||
END_CALL = 3,
|
||||
CREATE_ROOM = 4,
|
||||
/**
|
||||
* Переведен в стадию активного, значит комната на SFU уже создана и можно начинать обмен сигналами WebRTC
|
||||
*/
|
||||
ACTIVE = 4,
|
||||
END_CALL_BECAUSE_PEER_DISCONNECTED = 5,
|
||||
END_CALL_BECAUSE_BUSY = 6
|
||||
END_CALL_BECAUSE_BUSY = 6,
|
||||
ACCEPT = 7
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -28,12 +32,8 @@ export class PacketSignalPeer extends Packet {
|
||||
|
||||
private signalType: SignalType = SignalType.CALL;
|
||||
|
||||
/**
|
||||
* Используется если SignalType == CREATE_ROOM,
|
||||
* для идентификации комнаты на SFU сервере, в которой будет происходить обмен сигналами
|
||||
* WebRTC для установления P2P соединения между участниками звонка
|
||||
*/
|
||||
private roomId: string = "";
|
||||
private callId: string = "";
|
||||
private joinToken: string = "";
|
||||
|
||||
|
||||
public getPacketId(): number {
|
||||
@@ -50,8 +50,9 @@ export class PacketSignalPeer extends Packet {
|
||||
if(this.signalType == SignalType.KEY_EXCHANGE){
|
||||
this.sharedPublic = stream.readString();
|
||||
}
|
||||
if(this.signalType == SignalType.CREATE_ROOM){
|
||||
this.roomId = stream.readString();
|
||||
if(this.signalType == SignalType.CALL || this.signalType == SignalType.ACCEPT){
|
||||
this.callId = stream.readString();
|
||||
this.joinToken = stream.readString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,8 +68,9 @@ export class PacketSignalPeer extends Packet {
|
||||
if(this.signalType == SignalType.KEY_EXCHANGE){
|
||||
stream.writeString(this.sharedPublic);
|
||||
}
|
||||
if(this.signalType == SignalType.CREATE_ROOM){
|
||||
stream.writeString(this.roomId);
|
||||
if(this.signalType == SignalType.CALL || this.signalType == SignalType.ACCEPT){
|
||||
stream.writeString(this.callId);
|
||||
stream.writeString(this.joinToken);
|
||||
}
|
||||
return stream;
|
||||
}
|
||||
@@ -105,12 +107,20 @@ export class PacketSignalPeer extends Packet {
|
||||
this.src = src;
|
||||
}
|
||||
|
||||
public getRoomId(): string {
|
||||
return this.roomId;
|
||||
public getCallId(): string {
|
||||
return this.callId;
|
||||
}
|
||||
|
||||
public setRoomId(roomId: string) {
|
||||
this.roomId = roomId;
|
||||
|
||||
public setCallId(callId: string) {
|
||||
this.callId = callId;
|
||||
}
|
||||
|
||||
public getJoinToken(): string {
|
||||
return this.joinToken;
|
||||
}
|
||||
|
||||
public setJoinToken(joinToken: string) {
|
||||
this.joinToken = joinToken;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,8 +15,6 @@ export class PacketWebRTC extends Packet {
|
||||
|
||||
private signalType: WebRTCSignalType = WebRTCSignalType.OFFER;
|
||||
private sdpOrCandidate: string = "";
|
||||
private publicKey: string = "";
|
||||
private deviceId: string = "";
|
||||
|
||||
public getPacketId(): number {
|
||||
return 27;
|
||||
@@ -25,8 +23,6 @@ export class PacketWebRTC extends Packet {
|
||||
public _receive(stream: Stream): void {
|
||||
this.signalType = stream.readInt8();
|
||||
this.sdpOrCandidate = stream.readString();
|
||||
this.publicKey = stream.readString();
|
||||
this.deviceId = stream.readString();
|
||||
}
|
||||
|
||||
public _send(): Promise<Stream> | Stream {
|
||||
@@ -34,8 +30,6 @@ export class PacketWebRTC extends Packet {
|
||||
stream.writeInt16(this.getPacketId());
|
||||
stream.writeInt8(this.signalType);
|
||||
stream.writeString(this.sdpOrCandidate);
|
||||
stream.writeString(this.publicKey);
|
||||
stream.writeString(this.deviceId);
|
||||
return stream;
|
||||
}
|
||||
|
||||
@@ -55,20 +49,4 @@ export class PacketWebRTC extends Packet {
|
||||
return this.sdpOrCandidate;
|
||||
}
|
||||
|
||||
public setPublicKey(key: string) {
|
||||
this.publicKey = key;
|
||||
}
|
||||
|
||||
public getPublicKey(): string {
|
||||
return this.publicKey;
|
||||
}
|
||||
|
||||
public setDeviceId(id: string) {
|
||||
this.deviceId = id;
|
||||
}
|
||||
|
||||
public getDeviceId(): string {
|
||||
return this.deviceId;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user