1

Error "INVALID SERVICE" cada tanto

(24/07/2015 00:27:37 отредактировано sergio.botta)

Тема: Error "INVALID SERVICE" cada tanto

De vez en cuando cuando deseo recuperar los kilómetros de un vehículo recibo el mensaje INVALID SERVICE. Debo actualizar la página (F5) un par de veces hasta que "enlaza" y me recupera los valores.
Es un desarrollo en HTML y Javascript.

Ejecuto el inicio de sesión desde $(document).ready

    
$(document).ready(function () {
        var sess = wialon.core.Session.getInstance();
        var user = sess.getCurrUser(); 
        if( user ) { // Check state
            //console.log("Already logged as '" + user.getName()+"'"); 
        } else {
            sess.initSession("https://hst-api.wialon.com"); // initialize Wialon session
            sess.login("xxxx-user-xxxxxx", "xxx-pass-xxx", "",
            function (code) {
                if (code) {
                alert(wialon.core.Errors.getErrorText(code)); return;
            }
            });
        }        
    });

Luego, en el BODY ON LOAD ejecuto esta función, sabiendo que los nombres de las unidades son los nros de matriculas...:

    function CargarKilometrosActuales(nro_matricula) {
        var sess = wialon.core.Session.getInstance(); // get instance of current Session
        // flags to specify what kind of data should be returned
        var flags = wialon.item.Item.dataFlag.base | wialon.item.Unit.dataFlag.counters ;
        sess.updateDataFlags( // load items to current session
            [{type: "type", data: "avl_unit", flags: flags, mode: 0}], // Items specification
            function (code) { // updateDataFlags callback
                if (code) { alert(' ERROR:'+wialon.core.Errors.getErrorText(code)+' ... .'); return; } 
                // get loaded 'avl_unit's items  
                var units = sess.getItems("avl_unit");
                if (!units || !units.length){ alert("No se encontraron vehículos"); return; } /
                var done = false;
                for (var i = 0; i< units.length; i++){ // construct Select object using found units
                    var u = units[i]; // current unit in cycle
                    if ( u.getName()==nro_matricula ) {
                        done = true;
                        var unit = wialon.core.Session.getInstance().getItem(u.getId()); 
                        if(!unit){ alert('Unidad no existe: ' + unidad);return; }
                        var xkmtsReturn = unit.getMileageCounter();
                        document.getElementById("kmtsll").value = xkmtsReturn ;
                        return ;
                    }
                }
                if (!done) {alert('No existe el vehículo: ' + nro_matricula + ' en el sistema GPS'); return;}
            }
        );
    }

Este procedimiento funciona pero cada tanto la línea

if (code) { alert(' ERROR:'+wialon.core.Errors.getErrorText(code)+' ... .'); return; }

me muestra el error arrojado: INVALID SERVICE.

Cuando el error ocurre. Debo actualizar la página (presionando F5 por ejemplo) y ahí SI recupera los datos. A veces hay que actualizar 2 ó 3 veces hasta que recupere.

¿Alguien me puede explicar porqué cada tanto arroja el error?

Desde ya muchas gracias.

2

Error "INVALID SERVICE" cada tanto

Re: Error "INVALID SERVICE" cada tanto

Hello

Problem is that updateDataFlags called before login callback and session is still inactive. You should wait login callback before all other logic.

I created small demo for you http://sdk.wialon.com/playground/TyMhTbc6/16
CASE 1 - bad
CASE 2 - ok