gpt4 book ai didi

json - Node : parsing chunks of json

转载 作者:搜寻专家 更新时间:2023-11-01 00:07:04 24 4
gpt4 key购买 nike

我创建了一个测试服务器来发送字符串化的 JSON block 。当我连接到服务器时,它会发送无效的 JSON,我终究无法弄清楚原因。输出添加一个额外的双引号。

服务器代码:

const net = require('net'),
server = net.createServer(function(connection) {
console.log('subscriber connected.');

// send first chunk immediately
connection.write('{"type":"changed","file":"targ"');

let timer = setTimeout(function() {
connection.write('et.txt","timestamp":1358175758495}' + '\n');
connection.end();
}, 1000);

connection.on('end', function() {
clearTimeout(timer);
console.log('subscriber disconnected');
});
});

server.listen(5432, function() {
console.log('test server listening for subs...')
});

ldj.js

'use strict';
const
events = require('events'),
util = require('util'),
// client constructor
LDJClient = function(stream) {
events.EventEmitter.call(this);
let self = this;
let buffer = '';

stream.on('data', function(data) {

buffer += data;
console.log(buffer)
let boundary = buffer.indexOf('\n');
while(boundary !== -1) {
let input = buffer.substr(0, boundary);
buffer = buffer.substr(boundary + 1);
//self.emit('message', JSON.parse(input));
boundary = buffer.indexOf('\n');
}
});
};

util.inherits(LDJClient, events.EventEmitter);

// expose module methods
exports.LDJClient = LDJClient;
exports.connect = function(stream) {
return new LDJClient(stream);
};

输出:

{"type":"changed","file":"targ"
{"type":"changed","file":"targ"et.txt","timestamp":1358175758495}

那个额外的 "不应该在 "target.txt"值中。有什么想法吗?

TIA

最佳答案

与其手动拆分字符串,不如尝试获取整个字符串并将其拆分为 block 然后发送:

var data = '{"type":"changed","file":"target.txt","timestamp":1358175758495}';
var chunks = data.match(/.{1,10}/g); // 10 symbol chunks
for(var i = 0; i < chunks.length; i++) {
var chunk = chunks[i];
setTimeout(function() {
if(connection) {
connection.write(chunk+'\n');
if(i + 1 == chunks.length) {
connection.end();
}
}
}, i*1000);
}

connection.on('end', function() {
console.log('subscriber disconnected');
});

关于json - Node : parsing chunks of json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32320858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com