Исправление зависших сессий на сервере при преждевременном RTC close
This commit is contained in:
@@ -9,6 +9,7 @@ import java.util.concurrent.TimeUnit;
|
||||
import im.rosetta.client.ClientManager;
|
||||
import im.rosetta.packet.Packet26SignalPeer;
|
||||
import im.rosetta.packet.runtime.NetworkSignalType;
|
||||
import io.g365sfu.Room;
|
||||
import io.orprotocol.ProtocolException;
|
||||
import io.orprotocol.client.Client;
|
||||
import io.orprotocol.packet.Packet;
|
||||
@@ -17,13 +18,13 @@ public class CallManager {
|
||||
|
||||
private List<CallSession> callSessions = new ArrayList<>();
|
||||
private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
|
||||
private static final long RINGING_TIMEOUT = 10 * 1000; // 1 минута
|
||||
private static final long RINGING_TIMEOUT = 30 * 1000;
|
||||
private ClientManager clientManager;
|
||||
|
||||
|
||||
public CallManager(ClientManager clientManager) {
|
||||
this.clientManager = clientManager;
|
||||
scheduler.scheduleAtFixedRate(this::cleanupCallSessions, 0, 30, TimeUnit.SECONDS);
|
||||
scheduler.scheduleAtFixedRate(this::cleanupCallSessions, 0, 1, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
public void cleanupCallSessions() {
|
||||
@@ -75,6 +76,15 @@ public class CallManager {
|
||||
return null;
|
||||
}
|
||||
|
||||
public CallSession getCallSession(Room room) {
|
||||
for (CallSession session : this.callSessions) {
|
||||
if (session.getRoom() != null && session.getRoom().equals(room)) {
|
||||
return session;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isBusy(String publicKey) {
|
||||
for (CallSession session : this.callSessions) {
|
||||
if (session.clients.containsKey(publicKey)) {
|
||||
|
||||
Reference in New Issue
Block a user