2016-07-02 6 views
0

Ich habe ein Ajax-Aufruf an die IMBD DatenbankVerzögerung ist socket.io Ereignis?

// API Key 
key = "4dba72b2-7558-4c0f-bd18-9ffcb0999c4e"; 
// Url 
mainUrl = "http://api.myapifilms.com/imdb/top?token="+ key +"&format=json&data=0&start=1&end=250"; 
// API Call 
var request = require('request'); 

request(mainUrl, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 

    // Storing data in an object 
    var obj   = JSON.parse(body), //JSON Parser 
     movieArray = obj.data.movies, //Creating Array 
     item  = movieArray[randomMovieRank]; //Setting random movie variable 
     itermArray = [item.ranking,item.title,item.year]; 

    console.log(itermArray); 
    io.sockets.emit("serverAnswer", {ranking: itermArray[0], title: itermArray[1], year: itermArray}); 

    } 
}); 

return false; 

Verfolgt von:

socket.on("serverAnswer", function(data){ 
    console.log(data.title); 
}); 

Der Socket.on wird auf der Clientseite aufgerufen. Das Problem, das ich habe, ist, dass es die Daten sehr langsam durchzieht, wenn überhaupt. Die API funktioniert, da die Konsolenprotokollierung im Terminal korrekt ist. Aber Client-Seite zieht es manchmal durch Werbung manchmal nicht. Gibt es etwas, was ich falsch mache?

EDIT:

Added Pastebin: http://pastebin.com/TYHsqBmK

Antwort

1

Wenn Sie das Methode emittieren aufrufen, wird Ihr Client verbunden nicht garantiert, können Sie die Ajax-Ereignis auslösen können, nachdem der Client verbunden oder bestimmte Nachrichten aussenden, wie als

der Server:

io.on('connection',function(socket){ 
    if(movies !== null) 
    { 
     socket.emit("serverAnswer", {movies:movies}); 
    } 
    else{ 
     //1.ajax request IMDB resource 
     //2.set movies variables 
     //3.emit message 
    } 
}); 

der Kunde:

socket.on("serverAnswer", function(data){ 
     console.log(data); 
    }); 
+0

Wenn Sie die if-Anweisung aufrufen, was zu Filmen bezieht? –

+0

Ich habe ein Pastebin aufgenommen, um zu zeigen, was ich getan habe. –

+0

Nicht die genaue Antwort, die ich brauchte, aber die Richtung ist, was es perfekt für mich funktioniert hat. So danke! :) –