我们正在尝试使用 lib-jitsi-meet API 从头开始为 Jitsi 创建一个 React Native 移动应用程序,并且我们在 AWS 服务器上有一个自托管的 jitsi-meet 并且我们遵循了快速安装指南。就本文而言,URL 是https://jitsimeet.example.com
。
在 React Native 应用程序中,我们可以test1
使用JitsiMeetJS.initJitsiConference
. 加入后,用户在浏览器上显示为“Fellow Jitster” jitsimeet.example.com/test1
,但我们添加到会议中的曲目(视频/音频)(来自 React Native 移动应用程序)不可见,在浏览器中,它只是说“参与者已停止摄像头”和“参与者已静音”。
我们已经在我们的 React Native 应用程序中尝试了meet.jit.si
&beta.meet.jit.si
来查看问题是否与我们的后端安装有关。但这些也不起作用。
我们还在jitsimeet.example.com/test1
浏览器和 jitsi-meet 移动应用程序上尝试了相同的会议,它们都运行良好,没有任何问题。
我们还在本地设置了jitsi-meet存储库。在 Android 模拟器上运行 React Native 部分时,它工作正常(加入会议和渲染音频/视频轨道)。
从上面的观察来看,问题似乎出在我们对 React Native 应用程序的实现上。
可以在此处找到用于启动会议的组件的代码。在这里您可以找到我们存储库的链接。要运行它,只需执行npm i
and npx react-native run-android
。我们在jitsi-meet存储库中给出的 react-native 代码中使用了 polyfill。
在我们服务器上 jicofo 的日志中,我们可以看到当用户通过 web 或 jitsi-meet 移动应用程序加入时,我们得到:
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
而当我们通过我们的 React Native 应用程序加入时,我们只会得到:
org.jitsi.jicofo.ParticipantChannelAllocator.log() Sending session-initiate to: test1@conference.jitsimeet.example.com/946022e6
更多可能相关的信息
在客户端,我们在CONFERENCE_JOINED
事件触发后添加轨道,然后,我们得到以下日志
[JitsiConference.js] _doReplaceTrack - no JVB JingleSession
[JitsiConference.js] _doReplaceTrack - no P2P JingleSession
如上所述,我们可以从我们的 react native 应用程序加入会议,并且我们正在获取CONFERENCE_JOINED
, USER_JOINED
,USER_LEFT
事件。
TRACK_ADDED
添加本地音轨后,该事件也会立即在本地触发。但它不会因为其他远程客户端(网络浏览器或 jitsi-meet 移动应用程序)上发生的任何视频/桌面共享/音频更改而触发。
我们如何解决这个问题?