Как выполнить функцию одновременно для нескольких человек? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть приложение, хранящееся на сервере IBM, где одно и то же приложение используется несколькими людьми. У нас есть функция, в которой нам нужно выполнять этот конкретный фрагмент кода в одно и то же время для нескольких человек. Как я могу этого добиться? Особенность заключается в том, что конкретный человек инициирует функцию записи, которая откроет микрофоны каждого человека. Это достигается за счет сохранения переменной, значение которой я устанавливаю и устанавливаю, но когда я заканчиваю запись, человек, который немедленно заканчивает, запускается код, но для других людей требуется несколько миллисекунд и даже секунд, чтобы выполнить тот же кусок кода. ? Любая помощь, как я могу решить эту проблему.

render () {
this.props.meetingData.isMeetingDiscussionStarted ? this.recordFullAudio() : null;
!this.props.meetingData.isMeetingDiscussionStarted ? this.stopRecordingAudio() : null;
}


recordFullAudio = () => {
    const constraints = {
      audio: {
        channels: 1
      },
      video: false
    };
    getUserMedia(constraints)
      .then(stream => {
        this.stream = stream;
        const mimeType = 'audio/mpeg';
        const mime = ['audio/wav', 'audio/mpeg', 'audio/webm', 'audio/ogg']
          .filter(MediaRecorder.isTypeSupported)[0];
        const options = {
          mimeType: 'audio/webm',
        };
        this.mediaRecorder = new MediaRecorder(stream);
        this.mediaRecorder.addEventListener('dataavailable', event => {
          audioChunks.push(event.data);
        });

        this.mediaRecorder.addEventListener('stop', () => {                         });
      }).catch(error => { });
  }


stopRecordingAudio = () => {
    if (this.mediaRecorder && this.mediaRecorder.state !== 'inactive') {
      this.mediaRecorder.stop();
      this.stream.getTracks().forEach((track) => {
        track.stop();
      });
    }
    // Cleanup
    this.mediaRecorder = null;
    this.stream = null;
  }

isMeetingDiscussionStarted - это та переменная, которая поддерживается в NodeJS sharedb do c, которая используется для начала и завершения записи.

...