0

私が現在直面している問題は、シーン コンテンツの読み込みと再読み込みに関係しています。現在動作しているアプリは、ネットワークの切断と再接続にうまく対応していません。

たとえば、ajax-state が 200 / fine の状態がありますが、入ってくるデータが 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);
}

これを修正する方法を知っている人はいますか? ありがとう !

4

1 に答える 1