Twilio视频:当创建它的用户离开时,如何销毁视频室?

时间:2018-01-23 13:07:55

标签: android twilio

我正在使用twilio视频。

当本地参与者(创建房间的参与者)离开时,我希望房间被销毁。

到目前为止,当创建的第一个用户离开房间时,其他用户(在房间内)仍然可以看到彼此的提要并且可以聊天。

那么如何在上面的场景中摧毁一个视频室?

3 个答案:

答案 0 :(得分:0)

你只需要拆开活动房间的轨道。

room.on('disconnected', function () {
    log('Left');
    if (previewTracks) {
        previewTracks.forEach(function (track) {
            track.stop();
        });
    }
    detachParticipantTracks(room.localParticipant);
    room.participants.forEach(detachParticipantTracks);
    activeRoom = null;
    document.getElementById('button-join').style.display = 'inline';
    document.getElementById('button-leave').style.display = 'none';
});

function detachParticipantTracks(participant) {
var tracks = Array.from(participant.tracks.values());
detachTracks(tracks);

}

答案 1 :(得分:0)

Twilio开发者传道者在这里。

您可以使用状态回调和REST API执行此操作。

您需要做的是以某种方式记录哪个用户是您房间的所有者。然后,注册接收video room status callbacks。然后,您可以等待与会者断开连接的事件,如果已断开连接的与会者是该会议室的所有者,则使用Room resource in the REST APIset the room to completed,这将断开所有剩余参与者的连接。

让我知道这是否有帮助。

答案 2 :(得分:0)

您可以使用Twilio提供的DataTrack API进行操作。这样,您就可以在连接到会议室的参与者之间发送消息。

为LocalDataTrack创建实例

private var mLocalDataTrack = LocalDataTrack.create(mActivity)

创建房间并设置mLocalDataTrack

val connectOptionsBuilder = Builder(accessToken)
        .dataTracks(Collections.singletonList(mLocalDataTrack))
        .roomName(roomId.toString())

在您的视图中实施RemoteParticipant.Listener。侦听器包含onDataTrackSubscribed方法,您需要重写该方法并设置侦听器

override fun onDataTrackSubscribed(
        remoteParticipant: RemoteParticipant,
        remoteDataTrackPublication: RemoteDataTrackPublication,
        remoteDataTrack: RemoteDataTrack
    ) {
        Timber.e("onDataTrackSubscribed")

        remoteDataTrack.setListener(this)
    }

然后在您的活动中实现RemoteDataTrack.Listener界面。

override fun onMessage(remoteDataTrack: RemoteDataTrack, messageBuffer: ByteBuffer) {

        Timber.e("Message is %s", messageBuffer)

    }

    override fun onMessage(remoteDataTrack: RemoteDataTrack, message: String) {

        if (message == "disconnect") {
            mRoom?.disconnect()
        }

    }

并在主机与房间断开连接时发送消息。

mLocalDataTrack?.send("disconnect")

主持人按下按钮离开会议室后,该消息将发送给会议室的其他参与者并断开连接。