# sendTransport.produce() not working

**URL:** <https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235>\
**Category:** mediasoup libraries\
**Created:** [August 26, 2019, 9:03am UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235 "2019-08-26T09:03:38Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![jasonkang14](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/jasonkang14/32/126_2.png) [@jasonkang14](https://mediasoup.discourse.group/u/jasonkang14)\
**Post date:** [August 26, 2019, 9:03am UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235/1 "2019-08-26T09:03:39Z")

</div>

After creating a `sendTransport` and getting an audioTrack using `getUserMedia`, I am trying to have my `sendTransport` produce so that I can have a producer. However, I am not getting anything back.

Below is my debugging console and my code.

 ![49](https://global.discourse-cdn.com/free1/uploads/mediasoup/original/1X/b0c73bd21818b86a3c7528673a2251e25d133d6b.png)

```auto
const {
                id,
                iceParameters,
                iceCandidates,
                dtlsParameters,
                sctpParameters} = transportInfo;

            sendTransport = await device.createSendTransport({
                id: id,
                iceParameters: iceParameters,
                iceCandidates: iceCandidates,
                dtlsParameters: dtlsParameters,
                sctpParameters: sctpParameters
            }); 

            console.log("sendTransport: ", sendTransport);

            let audioStream = await mediaDevices.getUserMedia({ audio: true });
            const audioTrack = audioStream.getAudioTracks()[0];
            console.log("audioTrack: ", audioTrack);

            producer = await sendTransport.produce({
                track: audioTrack,
                codecOptions :
                {
                    opusStereo : 1,
                    opusDtx : 1
                }
            });

            console.log("producer:", producer )

```

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [August 26, 2019, 9:11am UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235/2 "2019-08-26T09:11:03Z")

</div>

The documentation is there to read it:

- [https://mediasoup.org/documentation/v3/communication-between-client-and-server/#creating-transports](https://mediasoup.org/documentation/v3/communication-between-client-and-server/#creating-transports)
- [https://mediasoup.org/documentation/v3/communication-between-client-and-server/#producing-media](https://mediasoup.org/documentation/v3/communication-between-client-and-server/#producing-media)

Please, try to read the documentation before asking anything here. We have not time for explaining what is already documented.

---

<div class="post-metadata">

**Author:** ![jasonkang14](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/jasonkang14/32/126_2.png) [@jasonkang14](https://mediasoup.discourse.group/u/jasonkang14)\
**Post date:** [August 27, 2019, 8:32am UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235/3 "2019-08-27T08:32:01Z")

</div>

I have read the documentation.  
According to the documentation, it states that transport.on(‘connect’) will be emitted if it’s first time calling transport.produce() and transport.on(‘produce’) will be emitted if it’s not, in order to create Producer instance in the server-side.

However, when I call transport.produce(), `let producer = await this.sendTransport.produce()` to be exact, I am not getting anything. When I get rid of the `await`, I have `transport.on('connect')` emitted, but nothing further. I tried to look at the mediasoup-client source code, and I have found out that my code is not passing through `safeEmitAsPromise`

When I modified the example in `mediasoup-demo`, it worked perfectly fine, but I am getting this problem when I am trying to build my own.

Do you have any advice?

I am trying to build my project in ReactNative.

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [August 27, 2019, 8:50am UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235/4 "2019-08-27T08:50:39Z")

</div>

I don’t fully understand the problem. You must set the `sendTransport.on("connect")` and `sendTransport.on("produce")` event listeners **before** you call `sendTransport.produce()` .

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [August 27, 2019, 8:56am UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235/5 "2019-08-27T08:56:48Z")

</div>

> [@ibc](#):
>
> You must set the `sendTransport.on("connect")` and `sendTransport.on("produce")` event listeners **before** you call `sendTransport.produce()`

And just once.

---

<div class="post-metadata">

**Author:** ![jasonkang14](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/jasonkang14/32/126_2.png) [@jasonkang14](https://mediasoup.discourse.group/u/jasonkang14)\
**Post date:** [August 27, 2019, 9:43am UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235/6 "2019-08-27T09:43:15Z")

</div>

Thank you for your reply. I had actually previously set the event listeners after I call `sendTransport.produce()`. but it still does not work after I moved the event listeners after calling `sendTransport.produce()`

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [August 27, 2019, 9:57am UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235/7 "2019-08-27T09:57:22Z")

</div>

Not sure if it’s a typo in your reply, but you must set event listeners **before** calling `produce()`.

---

<div class="post-metadata">

**Author:** ![jasonkang14](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/jasonkang14/32/126_2.png) [@jasonkang14](https://mediasoup.discourse.group/u/jasonkang14)\
**Post date:** [August 27, 2019, 9:58am UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235/8 "2019-08-27T09:58:21Z")

</div>

oh shoot there was a typo. I have set the event handlers before calling `produce()` like you have said, but it is still not working properly.

---- update

I think I got it to work.  
I am now calling `produce()` after `sendTransport` and `recvTransport` are created.  
I see that `sendTransport.on('connect')` is firing, but I still cannot see the producer in the client side.  
Below is my code;

```auto
const audioStream = await mediaDevices.getUserMedia({ audio: true });
    const audioTrack = audioStream.getAudioTracks()[0];
    this.producer = await this.sendTransport.produce({
      track: audioTrack,
      codecOptions:
      {
        opusStereo: 1,
        opusDtx: 1
      },
    });

    console.log('producer: ', this.producer);

```

Is that because `sendTransport.on('produce')` must fire in order for `produce()` to complete?

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [August 27, 2019, 10:04am UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235/9 "2019-08-27T10:04:45Z")

</div>

> [@jasonkang14](#):
>
> Is that because `sendTransport.on('produce')` must fire in order for `produce()` to complete?

Definitely yes.

---

<div class="post-metadata">

**Author:** ![jasonkang14](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/jasonkang14/32/126_2.png) [@jasonkang14](https://mediasoup.discourse.group/u/jasonkang14)\
**Post date:** [August 27, 2019, 10:06am UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235/10 "2019-08-27T10:06:24Z")

</div>

great. thank you so much!

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [December 2, 2019, 11:10pm UTC](https://mediasoup.discourse.group/t/sendtransport-produce-not-working/235/11 "2019-12-02T23:10:54Z")

</div>


