haiyangwu / mediasoup-client-android

mediasoup android client side library https://mediasoup.org
MIT License
182 stars 109 forks source link

Producer connection state stuck to "checking" #37

Open ArcDexx opened 4 years ago

ArcDexx commented 4 years ago

Basically the title. I am following all the proper steps, but I have never been able to hear anything coming from my device.

Here is my send transport listener :

 val listener = object: SendTransport.Listener
 {
            override fun onConnect(transport: Transport?, dtlsParameters: String?)
            {
                val params = JSONObject()
                params.put("method", "connectWebRtcTransport")

                val data = JSONObject()
                data.put("transportId", sendTransport.id)
                data.put("dtlsParameters", dtlsParameters)

                params.put("data", data)

                socket.send("request", params)
            }

            override fun onProduce(transport: Transport?, kind: String?, rtpParameters: String?, appData: String?): String
            {
                val params = JSONObject()
                params.put("method", "produce")

                val data = JSONObject()
                data.put("transportId", sendTransport.id)
                data.put("kind", kind)
                data.put("rtpParameters", JSONObject(rtpParameters))
                data.put("appData", appData)

                params.put("data", data)

                val latch = CountDownLatch(1)

                socket.emit("request", params, Ack { args ->

                    val idObj = args.firstOrNull { arg -> arg is JSONObject } as JSONObject
                    sendTransportRemoteId = idObj.getString("id")

                    latch.countDown()
                })

                latch.await()

                Log.i("Socket", "Returning = $sendTransportRemoteId // Thread = ${Thread.currentThread().name} // State = ${transport?.connectionState}")

                return sendTransportRemoteId
            }

            override fun onConnectionStateChange(transport: Transport?, connectionState: String?) {
                Log.i("Socket", "Send Transport : ${transport.toString()}, connectionState : $connectionState")
            }
        }