2017-10-13 1 views
1

Je développe le chat webRTC sur la plateforme opentok et vue.js. Alors que tout va bien sur desctop et navigateur mobile firefox, le chrome mobile se bloque en essayant de s'abonner à l'event.stream. La chose étrange est que si j'active les outils de développement alors il fonctionnera sur le chrome mobile comme prévu, donc je ne peux pas déboguer le journal des erreurs sur celui-ci. Je me suis creusé la tête pendant trois jours maintenant. Si quelqu'un peut m'aider, je l'apprécierais! Voici la partie pertinente de mon code:Opentok sur streamCreated subscribe rend le chrome mobile freeze

//start the live vicdeo sessiion 
    startLivevideoSession: function(session){ 

     this.call = true; //set call to true 

     //initiate opentok session 
     this.LiveVideo_session = OT.initSession(session.apiKey, session.session) 

     //define on streamcreated method 
     this.LiveVideo_session.on('streamCreated', function(event) { 

       //this is the problem: 
       this.LiveVideo_session.subscribe(event.stream, 'stream_video1', { 
         height: '100%', 
         width: '100%', 
         showControls: true, 
         style: { 
         audioLevelDisplayMode: 'auto', 
         buttonDisplayMode: 'off', 
         nameDisplayMode: 'off', 
         videoDisabledDisplayMode: 'auto', 
         showArchiveStatus: false 
         } 
       }, this.handleError) 
       //problem ends 


      }.bind(this)) 

     //define on sessionDisconnected method 
     this.LiveVideo_session.on("sessionDisconnected", function (event) { 

       if(this.call){ 
        this.stopVideoButtonPress() //stop on going chat session if any 
        bus.$emit('showModal', "stopLivevideoSessionLeft"); //notify user that other user left the page 
       } 
      }.bind(this)) 

     //define connect method 
     this.LiveVideo_session.connect(session.token, function(error) { 

       if(error){ 
        this.handleError(error) 
       }else{ 

        //if call mode is chat, do not publish chat at all 
        if(this.call_mode != 'chat'){ 
         this.LiveVideo_session.publish(this.my_video); //publish my video to chatroom 
        } 

        //if testsession, publish stream also to stream_video1 
        if(this.testSession){ 
         this.LiveVideo_session.publish(this.test_publisher) 
        } 
       } 

      }.bind(this)); 

     //store session.premium_session to premium_session 
     this.premium_session = session.premium_session 

     //wait for UI elements to be created on page before OT.initPublisher 
     setTimeout(() => { 
      //setup my_video 
      if(this.call_mode == "audio") //if only audio is selected 
       var publisherOptions = { 
        videoSource: null, 
        name: this.connection_setup.stream_video_description+" (vain ääni)", 
        width: '100%', 
        height: '100%', 
        opaque: '1', 
        style: { 
        nameDisplayMode: "on", 
        audioLevelDisplayMode: "on", 
        } 
       } 
       else 
       //setup my_video for videochat 
       var publisherOptions = { 
        name: this.connection_setup.stream_video_description, 
        width: '100%', 
        height: '100%', 
        opaque: '1', 
        style: { 
        nameDisplayMode: "on", 
        audioLevelDisplayMode: "on", 
        } 
       } 

      //if call mode is chat, do not publish chat at all 
      if(this.call_mode != 'chat'){ 
       console.log("call mode"+this.call_mode) 
       this.my_video = OT.initPublisher('my_video', publisherOptions, this.handleError) 
      } 

      //if testsession, publish stream also to stream_video1 
      if(this.testSession){ 
       console.log("call testSession "+this.testSession) 
       publisherOptions.name = 'Sinun kuvasi keskustelukumppanin näkemänä'; 
       this.test_publisher = OT.initPublisher('stream_video1', publisherOptions, this.handleError) 
      } 

     }, 600); 

    }, 

Répondre

1

Ce peut être Chrome qui se fige, pas opentok. Voir this chrome 61/android bug qui comprend une solution de contournement de l'ajout d'un border-radius

+0

Merci! Cela a réglé le problème! –