gpt4 book ai didi

sockets - 在node.js中接收数据

转载 作者:太空宇宙 更新时间:2023-11-04 02:43:08 24 4
gpt4 key购买 nike

我有一个 java 程序通过特定套接字向我的 node.js 应用程序发送数据。我希望能够获取所有数据,即来自 SQlite 数据库的信息,并将其发送到其他地方。

我发现类似下面的东西可以工作,但它似乎不可靠,因为数据丢失,有时甚至不显示。

stream.addListener('data', function(data){
buffer.write(data.toString());
});

顺便说一句,我需要套接字保持打开状态,这样我就无法调用“结束”事件。

我真的没有任何对stream.addListener的附件,所以如果它能按我想要的方式工作,我可以使用其他东西。基本上我要问的是,使用node.js从套接字获取数据的最有效方法是什么?

附注感谢您的宝贵时间

最佳答案

不保证 data 事件一次性发送给它的所有数据。您需要在多个事件上建立一个缓冲区,并监视某种分隔符(换行符、空字符,无论您感觉如何)。这是一个项目的示例,我正在解析来自 IRC 的数据(从 CoffeeScript 转换); parseDatadata 事件的事件处理程序(例如 socket.on('data', this.parseData);):

IrcConnection.prototype.parseData = function(data) {
var line, lines, i;

data = data.replace("\r\n", "\n");
this.buffer += data;
lines = this.buffer.split("\n");
this.buffer = "";

/* Put the last line back in the buffer if it was incomplete */
if (lines[lines.length - 1] !== '') {
this.buffer = lines[lines.length - 1];
}

/* Remove the final \n or incomplete line from the array */
lines = lines.splice(0, lines.length - 1);
for (i = 0; i < lines.length; i++) {
line = lines[i];
this.emit('raw', line);
}
};

关于sockets - 在node.js中接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11144769/

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