mirror of
https://github.com/SrIzan10/helium.git
synced 2026-06-06 00:56:58 +00:00
feat: rtc connections finally working
This commit is contained in:
@@ -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),
|
||||
}));
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
@@ -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,
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -124,6 +124,7 @@ export default defineWebSocketHandler({
|
||||
event: 'offer',
|
||||
sdp: msg.sdp,
|
||||
senderId: peer.id,
|
||||
iceServers: msg.iceServers,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user