Я занимаюсь разработкой веб-сайта с использованием видеочата Tokbox, мне нужно запустить таймер, если оба пользователя подключены и их видео отображаются.
Я использую приведенный ниже код, и если кто-либо из пользователей подключился, он вызывает функцию start_countdown.
session.on('streamCreated', function(event) {
event.streams.forEach(function(stream) {
if(stream.connection.connectionId != session.connection.connectionId) {
// subscribe(stream);
console.log("New stream in the session: " + event);
// console.log(event);
// console.log(stream);
// start_countdown();
}
});
});
но мне нужно вызвать функцию обратного отсчета, если оба пользователя предоставляют доступ к своему видео.
Может ли кто-нибудь помочь в этом.
Первая идея, которую нужно понять, состоит в том, что, поскольку вы делаете это в клиентском коде, каждый участник будет иметь свое собственное значение для обратного отсчета, потому что оба браузера независимо запускают таймер. Это, вероятно, хорошо, если вы просто пытаетесь отобразить время, когда оба пользователя были подключены (или остались) в пользовательском интерфейсе. Но если вместо этого вы пытаетесь поддерживать одни и те же часы, такой подход, вероятно, не самый лучший.
Далее в OpenTok streamCreated
событие инициируется из сеанса, когда удаленный поток становится доступным. Издатель также запускает streamCreated
событие, когда локальный поток начал отправляться (после того, как локальный пользователь предоставил доступ). Если вы знаете, что в сеансе будет только 2 пользователя, вы можете узнать, когда оба пользователя присоединились, прослушав оба эти события. Ниже приведен пример:
// Initialize flags
var publishing = false;
var subscribing = false;
// TODO: create a publisher (either using session.publish() or OT.initPublisher()) and publish a stream after the session has connected
// Listen to the events
session.on('streamCreated', function(event) {
// event.stream will always be a remote stream so the connection comparison is unnecessary
// TODO: subscribe to the stream
subscribing = true;
// Check if both criteria have been met
checkStartCountdown();
});
publisher.on('streamCreated', function(event) {
publishing = true;
// Check if both criteria have been met
checkStartCountdown();
});
function checkStartCountdown() {
if (publishing && subscribing) {
// TODO: start_countdown is the function as you described in your question
start_countdown();
}
}
Других решений пока нет …