El servidor nodejs 'pone' esta corriente JSON de Twitter y lo envía al cliente:nodejs - análisis chunked Twitter JSON
stream.twitter.com/1/statuses/filter.json?track=gadget
Los datos devueltos al cliente es 'fragmentada' JSON y ambos JSON.parse (fragmento) y eval ('(' + fragmento + ')') en el lado del cliente dan como resultado errores de análisis. La concatenación de las piezas al plato y esperar a que el evento 'fin' no es una solución, ya sea
me di muestras anteriores utilizan algo como esto en el lado del cliente que al parecer trabajaba antes:
socket.onmessage = function(chunk) {
data = eval("(" + chunk.data + ")");
alert(data.user.screen_name);
estoy el uso de esta en el lado del cliente y el resultado es un error de análisis:
var socket = new io.Socket();
socket.on('message', function(chunk) {
var data = eval('(' + chunk + ')'); // parsing error
alert(data.screen_name):
sé que su regreso con éxito un trozo JSON con:
var socket = new io.Socket();
socket.on('message', function(chunk) {
alert(chunk): // shows a JSON chunk
Servidor:
response.on('data', function (chunk) {
client.each(function(e) {
e.send(chunk);
});
¿Ha cambiado algo o qué otra cosa em haciendo mal?
ACTUALIZACIÓN: El evento 'final' no se activa porque su transmisión?
http.get({
headers: { 'content-type': 'application/json' },
host: 'stream.twitter.com',
path: '/1/statuses/filter.json?track...
}, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
client.each(function(e) {
e.send(chunk);
});
});
// does not fire
res.on('end', function() {
});
...
Estoy buscando la diferencia con http 1.0 y http 1.1 en cuanto al envío de datos fragmentados.
¿está seguro de concatenar los fragmentos y esperar a que el evento final no funcione? Creo que es la forma en que debería hacerse ya que no puede analizar el medio pedazo recibido. – neebz