我创建了对IMBd数据库的ajax调用
的
的// 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;
的
跟进:
的
的socket.on("serverAnswer", function(data){
console.log(data.title);
});
的
在客户端调用socket.on。我遇到的问题是,如果有的话,它会非常缓慢地提取数据。 API正在工作,因为它是终端中正确的控制台日志记录。但客户方面有时会通过广告来解决问题。有什么我做错了吗?
编辑:
添加了pastebin:http://pastebin.com/TYHsqBmK
答案 0 :(得分:1)
当您调用 emit 方法时,您的客户端无法保证连接,您可以在客户端连接或发出指定消息后触发ajax事件,例如
服务器:
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
}
});
客户:
socket.on("serverAnswer", function(data){
console.log(data);
});