feat: rtc connections finally working

This commit is contained in:
2026-01-12 21:26:38 +01:00
parent d67dd9e5bf
commit a8b90e62c1
4 changed files with 38 additions and 2 deletions

View File

@@ -58,6 +58,33 @@ export const presetUsers = pgTable(
);
// relations
export const peersRelations = relations(peers, ({ many }) => ({
roomsAsbroadcaster: many(rooms, { relationName: "broadcaster" }),
roomViewersAsViewer: many(roomViewers, { relationName: "viewer" }),
}));
export const roomsRelations = relations(rooms, ({ one, many }) => ({
broadcasterPeer: one(peers, {
fields: [rooms.broadcaster],
references: [peers.id],
relationName: "broadcaster",
}),
viewers: many(roomViewers, { relationName: "room" }),
}));
export const roomViewersRelations = relations(roomViewers, ({ one }) => ({
room: one(rooms, {
fields: [roomViewers.roomId],
references: [rooms.id],
relationName: "room",
}),
viewer: one(peers, {
fields: [roomViewers.viewerId],
references: [peers.id],
relationName: "viewer",
}),
}));
export const presetsRelations = relations(presets, ({ many }) => ({
presetUsers: many(presetUsers),
}));

View File

@@ -45,7 +45,9 @@ const { send } = useWebSocket(wsUrl, {
const message = JSON.parse(ev.data);
if (message.event === "offer") {
viewerStore.setConnectionStatus("creating rtc peer connections...");
const peerConnection = new RTCPeerConnection();
const peerConnection = new RTCPeerConnection({
iceServers: message.iceServers,
});
viewerStore.setPeerConnection(peerConnection);
peerConnection.ontrack = (event) => {

View File

@@ -37,7 +37,6 @@ const { send } = useWebSocket(wsUrl, {
if (message.event === "viewer-joined") {
const peerConnection = new RTCPeerConnection({
iceServers: streamerStore.iceServers,
iceTransportPolicy: "relay",
});
streamerStore.addPeerConnection(message.viewerId, peerConnection);
@@ -59,6 +58,12 @@ const { send } = useWebSocket(wsUrl, {
}
};
peerConnection.onconnectionstatechange = () => {
console.log(
`connection state with ${message.viewerId}: ${peerConnection.connectionState}`,
);
};
const offer = await peerConnection.createOffer();
await peerConnection.setLocalDescription(offer);
@@ -67,6 +72,7 @@ const { send } = useWebSocket(wsUrl, {
event: "offer",
targetId: message.viewerId,
sdp: offer,
iceServers: streamerStore.iceServers,
}),
);
}

View File

@@ -124,6 +124,7 @@ export default defineWebSocketHandler({
event: 'offer',
sdp: msg.sdp,
senderId: peer.id,
iceServers: msg.iceServers,
}));
}
}