Audición en vivo que sobrevives de carga-interruptores, spinner centrado, ringback de salida

Fixkamo-internal
Se descapó
26 de abril de 2026 a las 23:00 UTC
Autor
kamo
Compromit
55d121c

Tres correcciones coordinadas para la ruta de audio in-call: 1. AbortError en remoteAudio.play() (visible en consola de producción como "La solicitud de la obra fue interrumpida por una nueva solicitud de carga" era real: significaba audio cero en el altavoz. Cada sesión estaba reasignando la el elemento remoto compartido de arreglo compartido esrcObject en tres lugares (prime . . . . . . . . . . . . . . . . En pista), y cada reasignación corrió una carga que abortó el juego anterior () promesa. Reestructurado SipJsSession para poseer ONE persistente MediaStream que está unido al elemento de audio en el constructor y nunca reasignado a mitad de llamada. Se añaden vías a eso a través mientras negocian (a través de getReceivers y pc.ontrack) en lugar de sustitución de la corriente al por mayor. attachRemoteAudio() y primeRemoteAudio (enferma de altao) Defensivamente volvió a envolver a NUESTRA corriente sólo cuando una sesión de hermanos ha robaron el encuadernado (caso autocall loopback), por lo que la sesión en vivo El audio llega al altavoz. 2. El círculo de estado de conexión no estaba en la verdadera horizontal de la ventana emergente centro porque el botón Rechazo todavía ocupaba su ranura de 60px en el flex row incluso después de desvanecimiento a la opacidad 0. Cambiado a absoluto posicionamiento: El botón Respuesta se ancla en la traducción(-50%, -50%) por lo que posición nunca depende de Reject; Reject está anclado al borde derecho en el calc(50% . 24px) y deslizamientos hacia el centro mientras se desvanece bajo es Aceptando. 3. Las llamadas de salida fueron silenciosas durante el período de anillo 1-3 porque La trayectoria de los primeros medios de Asterisco no siempre llega a un navegador SIP cliente como audio audible. Añadido un elemento de audio de ringback separado en SoftphoneProvider que toca la misma fuente de tono de llamada mientras esConnecting && callDirection === 'outbound' &-isInCall. Rutas a través del dispositivo de altavoz (no el dispositivo del timbre) y utiliza altavocesVolume para que siga las preferencias de audio de llamada. Detienen Establecido / fallido / cancelado. Preparado durante la misma vez hacer clic de audio-desbloquear para que pueda reproducir sin gesto de usuario cada llamada.

Todos los cambios

Como lo que ves enviaste?

Cada una de estas actualizaciones aterriza en su espacio de trabajo automáticamente. Empieza gratis y verlo crecer semana tras semana.

Arranzar gratis para siempreVer Precios