This commit is contained in:
2025-12-25 03:51:29 +06:00
parent 4f91309f7f
commit 8265e2d719
16 changed files with 283 additions and 158 deletions

View File

@@ -165,6 +165,8 @@ export const useMediasoup = createSharedComposable(() => {
if (producerPaused)
consumer.pause()
console.log('newConsumer', consumer.paused)
consumer.on('transportclose', () => {
if (consumers.value.delete(consumer.id))
triggerRef(consumers)
@@ -283,7 +285,6 @@ export const useMediasoup = createSharedComposable(() => {
return
producers.value.delete(micProducer.value.id)
triggerRef(producers)
try {
micProducer.value.close()
@@ -294,6 +295,9 @@ export const useMediasoup = createSharedComposable(() => {
}
catch {
}
finally {
triggerRef(producers)
}
micProducer.value = undefined
}
@@ -304,21 +308,25 @@ export const useMediasoup = createSharedComposable(() => {
const producer = getProducerByType(type)
if (!producer)
if (!producer.value)
return
if (producer.paused)
if (producer.value.paused)
return
try {
producer.pause()
producer.value.pause()
await signaling.socket.value.emitWithAck('pauseProducer', {
producerId: producer.id,
producerId: producer.value.id,
})
}
catch {
producer.resume()
producer.value.resume()
}
finally {
triggerRef(producers)
triggerRef(producer)
}
}
@@ -328,18 +336,22 @@ export const useMediasoup = createSharedComposable(() => {
const producer = getProducerByType(type)
if (!producer)
if (!producer.value)
return
try {
producer.resume()
producer.value.resume()
await signaling.socket.value.emitWithAck('resumeProducer', {
producerId: producer.id,
producerId: producer.value.id,
})
}
catch {
producer.pause()
producer.value.pause()
}
finally {
triggerRef(producers)
triggerRef(producer)
}
}
@@ -350,11 +362,11 @@ export const useMediasoup = createSharedComposable(() => {
function getProducerByType(type: ProducerType) {
switch (type) {
case 'microphone':
return micProducer.value
return micProducer
case 'camera':
return cameraProducer.value
return cameraProducer
case 'share':
return shareProducer.value
return shareProducer
}
}

View File

@@ -1,8 +1,12 @@
import { createGlobalState, useDevicesList } from '@vueuse/core'
import { createGlobalState, useDevicesList, useLocalStorage } from '@vueuse/core'
export const usePreferences = createGlobalState(() => {
const inputDeviceId = shallowRef<MediaDeviceInfo['deviceId']>()
const outputDeviceId = shallowRef<MediaDeviceInfo['deviceId']>()
const inputDeviceId = useLocalStorage<MediaDeviceInfo['deviceId']>('INPUT_DEVICE_ID', 'default')
const outputDeviceId = useLocalStorage<MediaDeviceInfo['deviceId']>('OUTPUT_DEVICE_ID', 'default')
const autoGainControl = useLocalStorage('AUTO_GAIN_CONTROL', false)
const noiseSuppression = useLocalStorage('NOISE_SUPPRESSION', true)
const echoCancellation = useLocalStorage('ECHO_CANCELLATION', true)
const {
ensurePermissions,
@@ -15,6 +19,9 @@ export const usePreferences = createGlobalState(() => {
return {
inputDeviceId,
outputDeviceId,
autoGainControl,
noiseSuppression,
echoCancellation,
videoInputs,
audioInputs,
audioOutputs,

View File

@@ -66,8 +66,6 @@ export const useSignaling = createSharedComposable(() => {
const uri = host ? `${protocol}//${host}` : ``
// socket.value = io(`http://localhost:4000/webrtc`, {
// path: `/chad/ws`,
socket.value = io(`${uri}/webrtc`, {
path: `${pathname}/ws`,
transports: ['websocket'],

View File

@@ -22,6 +22,7 @@ export const useUpdater = createGlobalState(() => {
return {
lastUpdate,
checking,
checkForUpdates,
}
})