我正在使用twilio视频。
当本地参与者(创建房间的参与者)离开时,我希望房间被销毁。
到目前为止,当创建的第一个用户离开房间时,其他用户(在房间内)仍然可以看到彼此的提要并且可以聊天。
那么如何在上面的场景中摧毁一个视频室?
答案 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 API至set 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")
主持人按下按钮离开会议室后,该消息将发送给会议室的其他参与者并断开连接。