2015-01-19 1 views
0

Node.js를 - Socket.io함수에서 오는 데이터를 socket.emit()하는 방법은 무엇입니까?

즉 문자열이나 하드 코딩 된 변수의 경우 내가 잘 서버에서 클라이언트로 데이터를 전달할 수 있습니다

var greeting = 'hello'; 
socket.emit('greeting', greeting); 

그러나 데이터가 들어오는 것 기능이 더 이상 작동하지 않습니다

function search() { 
var greeting = 'hello'; 
} 
search(); 
socket.emit('greeting', greeting); 

편집 :
은 좀 더 코드를 공유하자 (결과 작품의 CONSOLE.LOG 유의하시기 바랍니다 t을 보여줍니다 그는 JSON 데이터를 표시하지만 null을 표시합니다.

io.sockets.on('connection', function (socket) { 
    socket.on('user location', function(content) { 
    fetch(); 
    socket.emit('results', fetch()); 
    }); 
}); 

function fetch() { 
    yelp.search({term: "food", location: location, limit: 1}, function(error, data) { 
    var results = data.businesses; 
    console.log(results); // THIS WORKS 
    return results; 
    }); 
} 

답변

0

이 작업을 수행 : -

io.sockets.on('connection', function (socket) { 
    socket.on('user location', function(content) { 
    fetch(function(data){ 
     socket.emit('results', data); 
    }); 
    }); 
}); 

function fetch(callback) { 
    yelp.search({term: "food", location: location, limit: 1}, function(error, data) { 
    var results = data.businesses; 
    console.log(results); // THIS WORKS 
    callback(results); 
    }); 
} 
+0

완벽! 고마워. – trs

3

변수가 함수 외부에 정의되어 있지 않습니다.

var greeting; 

function search() { 
    greeting = 'hello'; 
} 
search(); 
socket.emit('greeting', greeting); 

또는 당신은 좀 더 우아 함수의 반환 값을 사용합니다 :

이 작동합니다 나는 "You don't know JS" series을 추천 할 수 있습니다 더 변수 범위에 대한 책을 읽은를 들어

function search() { 
    var greeting = 'hello'; 

    return greeting; 
} 

socket.emit('greeting', search()); 

을 .

관련 문제