External API : Can't receive any participantKickedOut event

Hello, I’m using the external-api to embed jitsi-meet. Everything is working fine, call is established, people can join the room. On the client side I listen to all the events provided by the external-api and I can catch them all as expected, …except participantKickedOut, I never get this one. :pensive:

I subscribe to the events like this :

api.addEventListeners({
        'cameraError': onCameraError,
       // 
       // ..... skip all the other events for readability
      //
        'participantKickedOut': onParticipantKickedOut,
        'participantLeft': onParticipantLeft,

    });

And for every event I have an handler which look like this for now:

 function onParticipantKickedOut(object) {
     console.log("ExternalAPIEvent " + arguments.callee.name + JSON.stringify(object));
}

As a moderator, when I kick out a participant, the participant indeed leave the room, but I just don’t get the participantKickedOut event.

Here is a log on the moderator side, just after clicking on the kick button. I’m kicking out user ‘b’

Log
Content.js:122 @atlaskit/modal-dialog: Deprecation warning - Use of the footer prop in ModalDialog is deprecated. Please compose your ModalDialog using the 'components' prop instead
Logger.js:154 2020-03-10T02:18:32.068Z [modules/RTC/BridgeChannel.js] <RTCDataChannel.e.onmessage>:  Channel new dominant speaker event:  5a072cbb
video.js:109 ExternalAPIEvent onDominantSpeakerChanged{"id":"5a072cbb"}
video.js:97 ExternalAPIEvent onAvatarChanged{"id":"5a072cbb"}
Logger.js:154 2020-03-10T02:18:35.145Z [modules/xmpp/ChatRoom.js] Kick participant with jid:  tele0011a3f8rsl6uj@conference.jitsi.service.trk.____________.com/d3dcb87f <iq xmlns=​"jabber:​client" type=​"result" to=​"5a072cbb-c98c-4e35-a7e8-501a07f1715f@jitsi.service.trk.____________.com/​aa235ebe-7056-49c8-b45e-cf3837b2c10b" from=​"tele0011a3f8rsl6uj@conference.jitsi.service.trk.____________.com" id=​"b40852ce-2058-4fcc-8a3b-275b32867113:​sendIQ">​</iq>​
Logger.js:154 2020-03-10T02:18:35.155Z [modules/UI/videolayout/RemoteVideo.js] <v.removeRemoteStreamElement>:  Audio removed d3dcb87f k.fn.init [audio#remoteAudio_f2398733-0e84-479c-954b-71f90d4935b1-1]0: audio#remoteAudio_f2398733-0e84-479c-954b-71f90d4935b1-1length: 1__proto__: Object(0)
Logger.js:154 2020-03-10T02:18:35.192Z [modules/RTC/BridgeChannel.js] <e.value>:  sending a ReceiverVideoConstraint message with a maxFrameHeight of 360 pixels
Logger.js:154 2020-03-10T02:18:35.201Z [modules/UI/videolayout/VideoLayout.js] <Object.removeParticipantContainer>:  Removing remote video: d3dcb87f
Logger.js:154 2020-03-10T02:18:35.203Z [modules/UI/videolayout/SmallVideo.js] <v.remove>:  Remove thumbnail d3dcb87f
Logger.js:154 2020-03-10T02:18:35.227Z [modules/RTC/BridgeChannel.js] <e.value>:  sending selected changed notification to the bridge for endpoints ["5a072cbb"]
Logger.js:154 2020-03-10T02:18:35.232Z [conference.js] <c.<anonymous>>:  USER d3dcb87f LEFT: e {_jid: "tele0011a3f8rsl6uj@conference.jitsi.service.trk.____________.com/d3dcb87f", _id: "d3dcb87f", _conference: oe, _displayName: "b", _supportsDTMF: false, …}
Logger.js:154 2020-03-10T02:18:35.235Z [JitsiConference.js] <oe._maybeStartOrStopP2P>:  Auto P2P disabled
Logger.js:154 2020-03-10T02:18:35.237Z [modules/xmpp/moderator.js] <l.onMucMemberLeft>:  Someone left is it focus ? tele0011a3f8rsl6uj@conference.jitsi.service.trk.____________.com/d3dcb87f
Logger.js:154 2020-03-10T02:18:35.251Z [modules/xmpp/strophe.jingle.js] <s.value>:  on jingle source-remove from tele0011a3f8rsl6uj@conference.jitsi.service.trk.____________.com/focus <iq xmlns=​"jabber:​client" type=​"set" to=​"5a072cbb-c98c-4e35-a7e8-501a07f1715f@jitsi.service.trk.____________.com/​aa235ebe-7056-49c8-b45e-cf3837b2c10b" from=​"tele0011a3f8rsl6uj@conference.jitsi.service.trk.____________.com/​focus" id=​"NWEwNzJjYmItYzk4Yy00ZTM1LWE3ZTgtNTAxYTA3ZjE3MTVmQGppdHNpLnNlcnZpY2UudHJrLmRpZ2l0YWxhcnRzY2xvdWQuY29tL2FhMjM1ZWJlLTcwNTYtNDljOC1iNDVlLWNmMzgzN2IyYzEwYgB1dFhHNy02MTUwNDcA7Ao58H/​Nwk+2o570FI6laA==">​…​</iq>​
video.js:36 ExternalAPIEvent onParticipantLeft{"id":"d3dcb87f"}
Logger.js:154 2020-03-10T02:18:35.303Z [modules/xmpp/JingleSessionPC.js] Processing removeRemoteStream
Logger.js:154 2020-03-10T02:18:35.303Z [modules/xmpp/JingleSessionPC.js] ICE connection state:  connected
index.js:146 Halt: There are no SSRC groups in the remote description.
Logger.js:154 2020-03-10T02:18:35.337Z [modules/RTC/BridgeChannel.js] <RTCDataChannel.e.onmessage>:  Channel new dominant speaker event:  d3dcb87f

Sorry It’s quite hard to read on the forum. But basically after kicking out participant ‘b’, I can see what seems to be a correct xmmp message to inform about the kicking :

xmmp kick

Logger.js:154 2020-03-10T02:18:35.145Z [modules/xmpp/ChatRoom.js] Kick participant with jid: tele0011a3f8rsl6uj@conference.jitsi.service.trk.____________.com/d3dcb87f <iq xmlns=​"jabber:​client" type=​"result" to=​"5a072cbb-c98c-4e35-a7e8-501a07f1715f@jitsi.service.trk.____________.com/​aa235ebe-7056-49c8-b45e-cf3837b2c10b" from=​"tele0011a3f8rsl6uj@conference.jitsi.service.trk.____________.com" id=​"b40852ce-2058-4fcc-8a3b-275b32867113:​sendIQ">​</iq>​

But no participantKickedOut event.
A bit later, a source-remove xmmp is emitted :

xmmp source-remove

Logger.js:154 2020-03-10T02:18:35.251Z [modules/xmpp/strophe.jingle.js] <s.value>: on jingle source-remove from tele0011a3f8rsl6uj@conference.jitsi.service.trk.____________.com/focus <iq xmlns=​"jabber:​client" type=​"set" to=​"5a072cbb-c98c-4e35-a7e8-501a07f1715f@jitsi.service.trk.____________.com/​aa235ebe-7056-49c8-b45e-cf3837b2c10b" from=​"tele0011a3f8rsl6uj@conference.jitsi.service.trk.____________.com/​focus" id=​"NWEwNzJjYmItYzk4Yy00ZTM1LWE3ZTgtNTAxYTA3ZjE3MTVmQGppdHNpLnNlcnZpY2UudHJrLmRpZ2l0YWxhcnRzY2xvdWQuY29tL2FhMjM1ZWJlLTcwNTYtNDljOC1iNDVlLWNmMzgzN2IyYzEwYgB1dFhHNy02MTUwNDcA7Ao58H/​Nwk+2o570FI6laA==">​…​</iq>​

And in this case, just after I get my event participantLeft as expected :
ExternalAPIEvent onParticipantLeft{"id":"d3dcb87f"}

Any idea about what is happening ?

jitsi-meet 3863
Ubuntu 18.04.4 LTS
Prosody(0.10.0,Linux)
JiCoFo(1.0.524,Linux)

Looks like the problem runs deeper…
Here is my test sequence, with two users. It’s on the same computer, user “a” is on chrome, user “b” is on firefox :

  1. “a” enter room (and become moderator)
  2. “b” enter room
  3. “a” kick out “b”

But the logs tell a different story !

Log of a
a enter rooom
ExternalAPIEvent onVideoConferenceJoined{"roomName":"TELE0011c1ULuCAUfx","id":"9061438a","displayName":"a","formattedDisplayName":"a"}
b enter room
ExternalAPIEvent onParticipantJoined{"id":"5b2e19b1","displayName":"b","formattedDisplayName":"b"}
a kicks out b
ExternalAPIEvent onParticipantLeft{"id":"5b2e19b1"}
Log of b
b enter room
ExternalAPIEvent onParticipantJoined{"id":"9061438a","displayName":"a","formattedDisplayName":"a"}
ExternalAPIEvent onVideoConferenceJoined{"roomName":"TELE0011c1ULuCAUfx","id":"5b2e19b1","displayName":"b","formattedDisplayName":"b"}
a kicks out b
ExternalAPIEvent onParticipantLeft{"id":"9061438a"}

I’m a bit lost… When “b” entered the room, he got a message that “a” joined !?
And when “b” got kicked out, he got a message that “a” left !?

That event is fired for the participant itself, letting them know they were kicked out.

But in my case the kicked out participant too doesn’t get the participantKickedOut event. He get some events informing him that all the other participants left !
Look at the log just above, my “b” participant was kicked out by “a” ( the moderator) but “b” only received an event informing him that “a” left (and no participantKickedOut whatsoever). I’m quite confused…

Btw, it’s the same with a bigger number. I did a test with 5 persons in the room, and after kicking out a participant, this participant received 4 events to inform him all the others left (and nobody received a participantKickedOut)

Hum, looks like we might have an isssue then! Can you please open an issue on GitHub?

Thanks ! Done :

1 Like