2013-09-05 5 views
0

У меня есть socket.io связь работает сДанные .json в Socket.io

Client

var socket = io.connect('http://localhost:8080'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 

и сервер

var app = require('http').createServer(handler) 
, io = require('socket.io').listen(app) 
, fs = require('fs') 

var url = 'pathtojson'; 

app.listen(8080); 

function handler (req, res) { 
    fs.readFile(__dirname + '/index.html', function (err, data) { 
    if (err) { 
     res.writeHead(500); 
     return res.end('Error loading index.html'); 
    } 

    res.writeHead(200); 
    res.end(data); 
    }); 
} 

io.sockets.on('connection', function (socket) { 
socket.emit('news', url); 
socket.on('my other event', function (data) { 
    console.log(data, 'server'); 
    }); 
}); 

Это просто пример из Socket.io , Я хочу отправлять данные json клиенту всякий раз, когда он обновляется.

Но с чего начать?

ответ

1

У вас должен быть огонь событий, когда данные, которые вас интересуют в обновлении, изменились, а затем вам нужно, чтобы клиент прослушивал это событие и отвечал по желанию.

Вы действительно не дают контекст, отличный от «отправить данные JSON клиенту, когда он обновляется», поэтому при условии, что вы в любой процесс обновления вашего JSON на сервере:

if (req.url === '/endpoint') { 
    yourJSON.foo = 'bar'; 
    // doing whatever you're interested in to the JSON 
    socket.emit('JSON changed', yourJSON); 
    //an event is defined by the first argument, 
    //a value is passed with it as the second 
} 

NB: Получение более задумчивого и задумчивого с этим означает изменение вашего JSON таким образом, что сокет испускает только в ответ на изменение данных (событие, обратный вызов и т. Д.). Объяснение этой картины, возможно, выходит за рамки вопроса.

Затем на клиенте, вы хотите, чтобы определить функцию для обработки этих изменений:

socket.on('JSON changed', updateFunction); 
//where updateFunction is a function you define 
//that is expecting arguments that match the output 
//from the connected socket.emit event 

function updateFunction(newJSON) { 
    //do whatever with new JSON data 
} 

Это предполагает, что есть какая-то внешняя конечная точка осуществляется доступ для обновления JSON; если он пришел от клиента через socket.io, просто будет связано с определением другого события, но на этот раз он будет иметь emit от клиента и будет прослушиваться сервером.

Смежные вопросы