的服務器的NodeJS從Twitter「獲取」這個JSON數據流,並將其發送給客戶端:的NodeJS - 解析分塊Twitter的JSON
stream.twitter.com/1/statuses/filter.json?track=gadget
的數據返回給客戶端的「分塊」 JSON和兩個JSON.parse (chunk)和eval('('+ chunk +')')導致解析錯誤。 串接夾持件,等待「結束」事件不是解決的辦法
我注意到前面的例子中使用這樣的事情上顯然奏效之前客戶端:我
socket.onmessage = function(chunk) {
data = eval("(" + chunk.data + ")");
alert(data.user.screen_name);
在客戶端使用這一點,它會導致一個解析錯誤:
var socket = new io.Socket();
socket.on('message', function(chunk) {
var data = eval('(' + chunk + ')'); // parsing error
alert(data.screen_name):
我知道,它成功地返回一個JSON塊有:
var socket = new io.Socket();
socket.on('message', function(chunk) {
alert(chunk): // shows a JSON chunk
服務器:
response.on('data', function (chunk) {
client.each(function(e) {
e.send(chunk);
});
做了一些改變,否則什麼時間我做錯了嗎?
更新:'結束'事件不會觸發,因爲它的流?
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() {
});
...
我正在尋找與http 1.0和http 1.1的區別,只要發送分塊的數據。
你確定連接塊和等待結束事件不起作用嗎?我認爲這是它應該完成的方式,因爲它無法解析接收到的半塊。 – neebz 2011-04-24 18:02:19