Событие user-left запускается при вызове метода unpubli sh - PullRequest
0 голосов
/ 26 мая 2020

У меня есть простое тестовое приложение для вещания.

Я присоединяюсь к каналу как ведущий и в конце концов отменяю публикацию sh.

this.client = AgoraRTC.createClient({ mode: "live", codec: "h264", role: "host"});

//...then
await this.client.publish([this.audioTrack, this.videoTrack]);

//..eventually
await this.client.unpublish([this.audioTrack, this.videoTrack]);

Это немедленно запускает пожары users-unpublished и user-left в удаленных пользователях "аудитории".

Это не задокументировано в SDK.

Как предотвратить запуск события user-left, когда пользователь на самом деле не покинул канал?

Ответы [ 2 ]

2 голосов
/ 27 мая 2020

Это поведение по умолчанию для agora-web-sdk-ng. Когда хост вызывает «отменить публикацию», чтобы отменить публикацию sh его локального потока, его роль будет меняться от хоста к аудитории. И это вызовет обратный вызов «оставленный пользователем».

API обратного вызова «оставленный пользователем»: https://agoraio-community.github.io/AgoraWebSDK-NG/api/en/interfaces/iagorartcclient.html#event_user_left

API «Отменить публикацию»: https://agoraio-community.github.io/AgoraWebSDK-NG/api/en/interfaces/iagorartcclient.html#unpublish

Если вы хотите определить, покидает ли пользователь канал вместо того, чтобы переключать роли, вы можете добиться этого, внедрив RTM SDK. Когда пользователь присоединяется к каналу RT C (канал видеовызова), он также должен присоединиться к каналу RTM с тем же именем, которое используется для видеозвонка. Затем вы можете использовать метод getMembers в RTM SDK для получения списка пользователей в этом канале.

API «getMembers»: https://docs.agora.io/en/Real-time-Messaging/API%20Reference/RTM_cpp/classagora_1_1rtm_1_1_i_channel.html#a3f9c943059ac48a568c81798da38c3cb

1 голос
/ 28 мая 2020

user-left запускается как побочный эффект разрабатываемого SDK. Этот эффект планируется убрать в следующей версии.

Один из способов отличить guish пользователя, отменяющего публикацию стихов, - это аргумент события reason. Аргумент содержит BecomeAudience, если событие запускается, когда хост sh отменяет публикацию медиа. В противном случае аргумент содержит Quit или ServerTimeOut.

Кроме того, тогда причиной события является «Стать аудиторией», событие user-joind сработает через 10 секунд.

https://agoraio-community.github.io/AgoraWebSDK-NG/api/en/interfaces/iagorartcclient.html#event_user_left

...