1

We are trying to create a React Native mobile app for Jitsi from scratch using the lib-jitsi-meet API, and we have a self-hosted jitsi-meet on AWS server and we followed quick-install guide. For the purpose of this post, the URL is https://jitsimeet.example.com.

In the React Native app, we are able to join a conference called test1 using JitsiMeetJS.initJitsiConference. Once joined, the user is visible as "Fellow Jitster" on the browser at jitsimeet.example.com/test1, but the tracks (video/audio) we are adding to the conference (from React Native mobile app) are not visible and in the browser, it just says "Participant has stopped the camera" and "Participant is muted".

We have tried meet.jit.si & beta.meet.jit.si in our React Native app to see if the problem is related to our backend installation. But these were also not working.

We have also tried the same conference jitsimeet.example.com/test1 on the browser and in jitsi-meet mobile app and they are both working fine without any issues.

We have also set up the jitsi-meet repository locally. On running the React Native part on the Android emulator, it is working fine (both joining the conference and rendering the audio/video tracks).

From the above observations, it seems to be that the issue is coming from our implementation of React Native app.

Our code for the component that initiates the conference can be found here. Here you can find the link to our repository. To run it, just do npm i and npx react-native run-android. We are using polyfills in our react-native code as given in the jitsi-meet repository.

In the logs of jicofo on our server, we were able to see that when users join via web or jitsi-meet mobile app, we are getting:

org.jitsi.jicofo.ParticipantChannelAllocator.log() Sending session-initiate to: test1@conference.jitsimeet.example.com/2502e6ad
org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Got session-accept from: test1@conference.jitsimeet.example.com/2502e6ad
org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Received session-accept from test1@conference.jitsimeet.example.com/2502e6ad with accepted sources:Sources{ video: [ssrc=467278592 ssrc=2301072636 ssrc=839807103 ssrc=3616291734 ssrc=2331517151 ssrc=3181098946 ] audio: [ssrc=2795704819 ] }@2129717334

Whereas when we join via our React Native app, we are only getting:

org.jitsi.jicofo.ParticipantChannelAllocator.log() Sending session-initiate to: test1@conference.jitsimeet.example.com/946022e6
More information which might be relevant

On the client side, we are adding tracks after CONFERENCE_JOINED event is fired, then, we are getting the following logs

[JitsiConference.js] _doReplaceTrack - no JVB JingleSession
[JitsiConference.js] _doReplaceTrack - no P2P JingleSession

As mentioned above, we can join the conference from our react native app and we are getting CONFERENCE_JOINED, USER_JOINED, USER_LEFT events.

The TRACK_ADDED event is also firing locally right after adding local tracks. But it is not firing for any video/desktop-sharing/audio changes occurring on other remote clients (web browser or jitsi-meet mobile app).

How can we fix this?

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
SaiKumar Immadi
  • 107
  • 1
  • 10

0 Answers0