Skip to content

Commit 30faba9

Browse files
committed
fix: av publishing broken initially
1 parent 1e4eb51 commit 30faba9

2 files changed

Lines changed: 36 additions & 12 deletions

File tree

frontend/src/utils/media/TransportManager.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -258,12 +258,7 @@ export class TransportManager {
258258
errback: (error: unknown) => void,
259259
) => {
260260
try {
261-
if (sendTransport.connectionState === "new") {
262-
await client.connectWebRtcTransport(
263-
sendTransportId,
264-
dtlsParameters,
265-
);
266-
}
261+
await client.connectWebRtcTransport(sendTransportId, dtlsParameters);
267262
callback();
268263
} catch (error) {
269264
errback(error);
@@ -329,12 +324,7 @@ export class TransportManager {
329324
errback: (error: unknown) => void,
330325
) => {
331326
try {
332-
if (recvTransport.connectionState === "new") {
333-
await client.connectWebRtcTransport(
334-
recvTransport.id,
335-
dtlsParameters,
336-
);
337-
}
327+
await client.connectWebRtcTransport(recvTransport.id, dtlsParameters);
338328
callback();
339329
} catch (error) {
340330
errback(error);

frontend/src/utils/sfu-meeting-manager.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,39 @@ import { TransportManager } from "./media/TransportManager.ts";
99
import { VideoElementManager } from "./media/VideoElementManager.js";
1010
import { getSFUClient } from "./sfu-client.js";
1111

12+
function createMediaHandler() {
13+
return {
14+
localStream: null,
15+
audioProducer: null,
16+
videoProducer: null,
17+
screenProducer: null,
18+
setProducers(producers = {}) {
19+
Object.assign(this, producers);
20+
},
21+
stopScreenShare() {
22+
this.screenProducer = null;
23+
},
24+
cleanup() {
25+
for (const producer of [
26+
this.audioProducer,
27+
this.videoProducer,
28+
this.screenProducer,
29+
]) {
30+
try {
31+
producer?.close?.();
32+
} catch (error) {
33+
console.warn("Failed to close producer during cleanup:", error);
34+
}
35+
}
36+
37+
this.localStream = null;
38+
this.audioProducer = null;
39+
this.videoProducer = null;
40+
this.screenProducer = null;
41+
},
42+
};
43+
}
44+
1245
export class SFUMeetingManager {
1346
constructor() {
1447
this.meetingId = null;
@@ -24,6 +57,7 @@ export class SFUMeetingManager {
2457
this.participantManager = new ParticipantManager();
2558
this.consumerManager = new ConsumerManager();
2659
this.transportManager = new TransportManager();
60+
this.mediaHandler = createMediaHandler();
2761

2862
this.sfuClient = null;
2963
this.eventHandlers = {};

0 commit comments

Comments
 (0)