2013-07-31 1 views
0

Проблема, с которой мы сталкиваемся в настоящее время, связана с загрузкой и перезагрузкой содержимого сцен. Приложение, так как оно работает сегодня, плохо реагирует на сетевое отсоединение и повторное подключение.Samsung TV APP - обновление содержимого сцен при повторном подключении сети

Например, есть состояния, в которых ajax-состояние равно 200/штраф. Но данные, входящие в NULL ->, приводят к пустым сценам.

Вот отрывок из моего контроллера, как это выглядит сейчас:

Controller.assignEvents = function() { 
    var player = document.getElementById('pluginObjectPlayer'); 
    player.OnConnectionFailed = 'Controller.ConnectionFailed'; 
    player.OnNetworkDisconnected = 'Controller.NetworkDisconnected'; 
    player.OnStreamNotFound = 'Controller.StreamNotFound'; 

    $$(document).ajaxError(function(e, xhr, settings, exception) { 
     alert('error (' + xhr.status + ') ' + 'in: ' + settings.url + ' | error: ' + exception); 
     if(xhr.status === 0 || xhr.status === 408 || xhr.status === 504) Controller.NetworkDisconnected(); 
    }); 

    $$(document).ajaxSuccess(function(event, xhr, settings){ 
     alert('ajaxSuccess('+xhr.status+'): ' + settings.url); 
     if(settings.url.indexOf('http:') === 0) { 
      if(Controller.no_network) { 
       Controller.no_network = false; 
       Controller.hideNotification(); 
      } 
     } 
    }); 
} 

Controller.ConnectionFailed = function() { 
    alert("Stream connection failed"); 
    Controller.no_network = true; 
    Controller.showNotification('Nema mreze'); 
} 

Controller.NetworkDisconnected = function() { 
    alert('NetworkDisconnected'); 

    Controller.no_network = true; 
    Controller.showNotification('Nema mreze'); 


    if(typeof sf.scene.get('Youtube') != 'undefined' && sf.scene.get('Youtube').isVideoPlaying){ 
     sf.scene.hide('Overlay'); 
    } else { 

     sf.scene.get('Content').streamStop(false); 
    } 

    sf.scene.get('Content').streamStop(false); 
} 

Controller.NetworkResumed = function() { 
    alert('NetworkResumed'); 

    Controller.no_network = false; 

    Controller.hideNotification(); 

    if(Controller.starting){ 
     Controller.startup(); 
    } else { 
     alert("Start timeout on resume"); 
     $('#buffering').show(); 
     setTimeout(function(){ 
      sf.scene.get('Content').streamResume(false); 
      $('#buffering').hide(); 
     }, 5000); 
    } 
} 

Controller.isConnectionAvailable = function() { 

    if(sf.core.getEnvValue("modelid") == 'SDK') return Controller.SDK_NETWORK; 

    var network = document.getElementById('pluginObjectNetwork'); 

    var interfaceType = network.GetActiveType(); 

    if(interfaceType === -1) return false; 

    var physicalConn = network.CheckPhysicalConnection(interfaceType); 

    if(physicalConn !== 1) return false; 

    var httpStatus = network.CheckHTTP(interfaceType); 

    if(physicalConn !== 1) return false; 

    return true; 
} 

Controller.pollNetwork = function() { 
    alert('polling network'); 

    var prevStatus = Controller.no_network; 
    Controller.no_network = !Controller.isConnectionAvailable(); 

    if(! Controller.no_network && prevStatus) { 
     Controller.NetworkResumed(); 
    } 
    else if(Controller.no_network && ! prevStatus) { 
     Controller.NetworkDisconnected(); 
    } 

    setTimeout(Controller.pollNetwork, 2000); 
} 

Кто-нибудь есть идея, как это исправить? Благодаря !

ответ

0

Я предлагаю вам проверить xhr.responseText также, прежде чем принимать решение о его успешности. Иногда это происходило с 200 статусом кода, но тело ответа было пустым

 Смежные вопросы

  • Нет связанных вопросов^_^