Inbound data packets never delivered while media flows normally (2.13.0, LiveKit Cloud 1.13.7)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- android
- Área
- mobile-dev
Línea de trabajo
Start by tracing Engine._onDataChannel and how _reliable and _lossy messages reach DataReceivedEvent; compare that flow with the JS client's _data_track handling and verify which channel carries the missing packets. Done means inbound data from the reported browser setup reaches the Flutter client and a regression test covers delivery.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
On Android with livekit_client: 2.13.0 against LiveKit Cloud (server 1.13.7), no inbound data packets are ever delivered to the client, while inbound media on the same connection works normally. DataReceivedEvent never fires. Outbound publishData from the same client is received correctly by browser participants, so the failure is inbound-only.
Two livekit-client (JS, 2.18.9) participants in the same room exchange data perfectly, so the room, the server and the publishers are fine.
Expected
A browser calling localParticipant.publishData(bytes, { reliable: true, topic: 'x' }) should surface as DataReceivedEvent on the Flutter client in the same room.
Actual
Nothing arrives. Measured over a session with zero reconnects and zero signal errors:
| Inbound media | 4 × TrackSubscribedEvent, 3 × AddRecvStream — works |
| Inbound data | 0 packets, 0 DataReceivedEvent |
| Outbound data | published fine; browser participants receive it |
EngineFullRestartingEvent / RoomReconnectingEvent |
0 |
Could not send message, socket not connected |
0 |
Ruled out
With setLoggingLevel(LoggerLevel.kALL):
- The server does open the channel.
FINE: Server opened DC label: _reliableand_lossy, both reaching a connected state. - SCTP is healthy.
DataChannel received OPEN_ACK message, sid = 1andsid = 3; negotiatedm=application <port> UDP/DTLS/SCTP webrtc-datachannel. - Not the reliable-sequence dedupe in
Engine._emitDataPacket. NoIgnoring duplicate or out-of-order packetis logged, and the JS client startsreliableDataSequenceat 1, which passes thesequence <= lastReceivedcheck. - Not a protocol mismatch. Both clients negotiate
protocol=16. - Not transport fallback. The session ran on UDP (ICE selected UDP pairs overwhelmingly).
- Not app-side lifecycle. The
Roomwas created once and never disposed or reconnected during the measurement window.
Possibly relevant observation
The server opens a third data channel that this SDK drops:
FINE: Server opened DC label: _reliable
FINE: Server opened DC label: _lossy
WARNING: Unknown DC label: _data_track
Engine._onDataChannel switches on _reliableDCLabel / _lossyDCLabel and warns on anything else, so no onMessage handler is attached. livekit-client 2.18.9 has a third branch — dataTrackDataChannel = '_data_track' → handleDataTrackMessage — which this SDK has no equivalent of.
I can't confirm which channel the packets actually arrive on, so I'm not claiming this is the cause — but it is the one asymmetry I found between the working JS client and the failing Flutter one against the same server.
Environment
livekit_client2.13.0 (latest on pub.dev at time of writing)- Flutter 3.41.2, Android 16 (API 36), arm64
- LiveKit Cloud,
serverVersion: 1.13.7,subscriberPrimary: true - Peer:
livekit-client2.18.9 in a desktop browser - Token grants:
roomJoin,canPublish,canSubscribe,canPublishData - Reproduced on both WiFi and cellular
Workaround in use
Publishing on the lossy channel (outbound is unaffected either way) and polling our own server-persisted message history for anything inbound. Features with no server-side persistence — raise-hand, typing indicators — simply don't reach the Flutter client.
Happy to supply fuller logs or test a patch.
- Lenguaje dominante
- Dart
- Estrellas
- 421
- Forks
- 260
- Merge medio
- 3 d 9 h
- PR fusionados (30 d)
- 11
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de livekit/client-sdk-flutter
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
livekit/client-sdk-flutter#1227 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
livekit/client-sdk-flutter#1219 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
iOS: `audioDeviceModule` becomes permanently `nil`/unavailable after backgrounding, even though `AVAudioSession` is never interruptedPosiblemente ocupada @hiroshihorie la tomó hace 32 días. Abierto
livekit/client-sdk-flutter#1206 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[bug]Early reconnect during the initial room connectionQuizá libre de nuevo @hiroshihorie la tomó hace 43 días y no hay ningún pull request abierto. Abierto
livekit/client-sdk-flutter#1189 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Concurrent transport teardown: cleanUp() nulls publisher/subscriber after awaiting dispose()Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
livekit/client-sdk-flutter#1186 · 1 reacción ·
Los mantenedores suelen responder en 1 día
Todos los issues de livekit/client-sdk-flutter
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
jhomlala/betterplayer#1599 ·
Los mantenedores suelen responder en 1 día
-
[Bug] Windows:开启 Flutter windowing 后对话框被提升为原生窗口,首个 ShowWindow 死锁导致整个应用卡死(设置 → 远程访问端口 100% 复现)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
AimesSoft/NipaPlay-Reload#1021 ·
Los mantenedores suelen responder en 1 día
-
enhancement triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
fluttercommunity/plus_plugins#4004 ·
Los mantenedores suelen responder en 1 día
-
agent:ready bug P2 · 中 健壮性 区域: 启动与合规 待验证 隐私与合规
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
ASDW51/DanmuFloat#106 ·
Los mantenedores suelen responder en 1 día
-
c: proposal p: go_router package team-ecosystem
Dificultad 2/5 1-3 horas Aptitud para principiantes 60/100
flutter/flutter#194542 · 1 comentario ·
Los mantenedores suelen responder en 1 día