2014-04-24 9 views
0

socket.io 및 node.js를 사용하여 Google지도에서 위치를 업데이트하려고합니다. 지도를 업데이트하는 데 2 ​​가지 다른 방법이 있습니다. 아마도 내가 새로운이 기본 문제 일 겁니다.소켓 및 node.js 전송

app.post ('/ 위치', 기능 (요청, 응답) {

var obj = request.body; 
//var obj = { gps_latitude: '59.33535', gps_heading: '0.0', gps_timestamp: '1397132411524', gps_speed: '0.0', device_id: 'oscar', gps_longitude: '17.999672099999998' }; 
//insertLocation(obj); 
console.log("Connected clients: " + map_clients.length); 

for(var i=0; i < map_clients.length; i++){ 
    var client = map_clients[i]; 
    var jsonString = JSON.stringify({ type:'gps', data:obj}); 
    console.log(jsonString); 
    client.send(jsonString); 
} 

response.writeHead(200, {"Content-Type": "text/plain"}); 
response.write("OK"); 
response.end(); 
}); 

2)에서 소켓을 사용하여 업데이트 :이처럼 보이는 작동하는 API 호출을 사용

1) 이 클라이언트는 작동하지 않습니까? 나는 그것이 콘솔에서 데이터를 전송하는 것을 볼 수 있습니다

io.sockets.on("connection", function(client){ 
map_clients.push(client); 
//Update position 
client.on('position', function (data) { 
    var obj = { gps_latitude: '59.33535', gps_heading: '0.0', gps_timestamp: '1397132411524', gps_speed: '0.0', device_id: 'oscar', gps_longitude: '17.999672099999998' }; 
    var jsonString = JSON.stringify({ type:'gps', data:obj}); 
    console.log(jsonString); 
    client.send(jsonString);   
}); 
client.on('disconnect', function(){ 
map_clients.splice(map_clients.indexOf(client), 1); 
}) 
}); 

: 서버 코드처럼 보이는

디버그 - 3 ::: { "유형"쓰기 웹 소켓 : "GPS", "데이터" { "gps_latitude": "59.33535", "gps_heading": "0.0", "gps_timestamp": "1397132411524", "gps_speed": "0.0", "device_id": "oscar", "gps_longitude": "17.999672099999998"}}

하지만지도가 업데이트되지 않습니다. 지도 클라이언트 측에서이 코드가 있지만 위의 소켓 코드를 통해 tpo 업데이트를 시도 할 때 결코 트리거되지 않습니다. 서버 측에서

client.on('position', callback) 

를 사용하는 경우

socket = io.connect(socket_url); 

    socket.on('message', function(d){ 
    console.log("update position"); 
    var parsedObj = JSON.parse(d); 
    if(parsedObj.type === 'gps'){ 
     var gps = parsedObj.data; 
     $('#messages').append(formatGPSHTMLOutput(gps)); 
     processGPS(gps); 
    } 
    }); 

답변

0

당신이 client.send 대신

client.emit('position', {your:"jsondata"}) 

를 사용해야합니다, 당신은 또한

socket.on('position', callback) 

를 사용할 필요가 클라이언트 쪽

+0

흠 이제 나는별로 따라하지 않습니다. 2 개의 클라이언트 쪽 페이지가 있습니다. 1) thats가 위치를 보냅니다. 2) 서버를 통해 1 페이지에서 위치를 얻습니다. 페이지 1에서 위치를 보내려면 : function initSocket() { socket = io.connect (socket_url); \t socket.emit ('위치', {gps_latitude : '59 .33535 ', gps_heading :'0.0 ', gps_timestamp :'1397132411524 ', gps_speed :'0.0 ', device_id :'oscar ', gps_longitude : '17 .999672099999998'}); console.log ('위치 전송'); } 그리고 서버에서 스크립트를 실행합니다. 그러나 서버와 페이지 2 사이의 연결은 작동하지 않습니다. – morto