Inbound data packets never delivered while media flows normally (2.13.0, LiveKit Cloud 1.13.7)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- android
- Ambito
- mobile-dev
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Dart
- Stelle
- 421
- Fork
- 260
- Merge medio
- 2g 5h
- PR unite (30g)
- 17
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di livekit/client-sdk-flutter
-
`jwtPayload.video` returns null grants for tokens from LiveKit server SDKsForse già presa @RaphaelFakhri l’ha presa 3 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
livekit/client-sdk-flutter#1236 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
livekit/client-sdk-flutter#1227 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
livekit/client-sdk-flutter#1219 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
iOS: `audioDeviceModule` becomes permanently `nil`/unavailable after backgrounding, even though `AVAudioSession` is never interruptedForse già presa @hiroshihorie l’ha presa 28 giorni fa. Aperta
livekit/client-sdk-flutter#1206 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[bug]Early reconnect during the initial room connectionForse di nuovo libera @hiroshihorie l’ha presa 40 giorni fa e non c’è nessuna pull request aperta. Aperta
livekit/client-sdk-flutter#1189 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di livekit/client-sdk-flutter
Issue simili
-
documentation good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
djazairdev/wilayas#22 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 80/100
rajput-hemant/calculator#199 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
leancodepl/app-rating#35 ·
-
Mobile login: "Sign In" button is squashed to 16 px with its label cut while the keyboard is openApertaai-driven-qa bug claude
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
linagora/tmail-flutter#4976 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
aaronified/fluenough#503 ·
I maintainer di solito rispondono entro 1 giorno