Обновление протокола для неавторизованных звонков

This commit is contained in:
RoyceDa
2026-04-04 18:31:05 +02:00
parent 3c6b2e0e71
commit 939a4d55f4
10 changed files with 427 additions and 128 deletions

View File

@@ -29,16 +29,18 @@ public class Packet26SignalPeer extends Packet {
* Тип сигнала
*/
private NetworkSignalType signalType;
/**
* Идентификатор комнаты, в которой происходит звонок, заполняется если тип сигнала CREATE_ROOM, иначе null
* callId и joinToken нужны для того, чтобы идентифицировать сессию звонка. Так как roomId это только ID комнаты на sfu
*/
private String roomId;
private String callId;
private String joinToken;
@Override
public void read(Stream stream) {
this.signalType = NetworkSignalType.fromCode(stream.readInt8());
if(this.signalType == NetworkSignalType.END_CALL_BECAUSE_BUSY || this.signalType == NetworkSignalType.END_CALL_BECAUSE_PEER_DISCONNECTED) {
if(this.signalType == NetworkSignalType.END_CALL_BECAUSE_BUSY
|| this.signalType == NetworkSignalType.END_CALL_BECAUSE_PEER_DISCONNECTED
|| this.signalType == NetworkSignalType.RINGING_TIMEOUT) {
return;
}
this.src = stream.readString();
@@ -46,8 +48,9 @@ public class Packet26SignalPeer extends Packet {
if (signalType == NetworkSignalType.KEY_EXCHANGE) {
this.sharedPublic = stream.readString();
}
if(signalType == NetworkSignalType.CREATE_ROOM) {
this.roomId = stream.readString();
if(signalType == NetworkSignalType.CALL || signalType == NetworkSignalType.ACCEPT || signalType == NetworkSignalType.END_CALL) {
this.callId = stream.readString();
this.joinToken = stream.readString();
}
}
@@ -56,7 +59,9 @@ public class Packet26SignalPeer extends Packet {
Stream stream = new Stream();
stream.writeInt16(this.packetId);
stream.writeInt8(this.signalType.getCode());
if(this.signalType == NetworkSignalType.END_CALL_BECAUSE_BUSY || this.signalType == NetworkSignalType.END_CALL_BECAUSE_PEER_DISCONNECTED) {
if(this.signalType == NetworkSignalType.END_CALL_BECAUSE_BUSY
|| this.signalType == NetworkSignalType.END_CALL_BECAUSE_PEER_DISCONNECTED
|| this.signalType == NetworkSignalType.RINGING_TIMEOUT) {
return stream;
}
stream.writeString(this.src);
@@ -64,8 +69,9 @@ public class Packet26SignalPeer extends Packet {
if (signalType == NetworkSignalType.KEY_EXCHANGE) {
stream.writeString(this.sharedPublic);
}
if(signalType == NetworkSignalType.CREATE_ROOM) {
stream.writeString(this.roomId);
if(signalType == NetworkSignalType.CALL || signalType == NetworkSignalType.ACCEPT || signalType == NetworkSignalType.END_CALL) {
stream.writeString(this.callId);
stream.writeString(this.joinToken);
}
return stream;
}
@@ -134,20 +140,35 @@ public class Packet26SignalPeer extends Packet {
public void setSignalType(NetworkSignalType signalType) {
this.signalType = signalType;
}
/**
* Получить идентификатор сессии звонка, если тип сигнала CALL или ACCEPT
* @return идентификатор сессии звонка, если тип сигнала CALL или ACCEPT, иначе null
*/
public String getCallId() {
return callId;
}
/**
* Получить идентификатор созданной комнаты, если тип сигнала CREATE_ROOM
* @return идентификатор комнаты, если тип сигнала CREATE_ROOM, иначе null
* Установить идентификатор сессии звонка, если тип сигнала CALL или ACCEPT
* @param callId идентификатор сессии звонка, если тип сигнала CALL или ACCEPT
*/
public String getRoomId() {
return roomId;
public void setCallId(String callId) {
this.callId = callId;
}
/**
* Установить идентификатор комнаты, в которой происходит звонок, если тип сигнала CREATE_ROOM
* @param roomId идентификатор комнаты, если тип сигнала CREATE_ROOM
/**
* Получить токен для присоединения к сессии звонка, если тип сигнала CALL или ACCEPT
* @return токен для присоединения к сессии звонка, если тип сигнала CALL или ACCEPT, иначе null
*/
public void setRoomId(String roomId) {
this.roomId = roomId;
public String getJoinToken() {
return joinToken;
}
/**
* Установить токен для присоединения к сессии звонка, если тип сигнала CALL или ACCEPT
* @param joinToken токен для присоединения к сессии звонка, если тип сигнала CALL или ACCEPT
*/
public void setJoinToken(String joinToken) {
this.joinToken = joinToken;
}
}