Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 在node.js中接收数据_Sockets_Node.js - Fatal编程技术网

Sockets 在node.js中接收数据

Sockets 在node.js中接收数据,sockets,node.js,Sockets,Node.js,我让一个java程序通过一个特定的套接字向我的node.js应用程序发送数据。我希望能够从SQlite数据库获取所有数据,即信息,并将其发送到其他地方 我发现以下类似的方法可以工作,但似乎不可靠,因为数据丢失,有时甚至不显示 stream.addListener('data', function(data){ buffer.write(data.toString()); }); 另一方面,我需要插座保持打开状态,这样我就不能调用“结束”事件 我真的没有任何stream.addListener的

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

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

stream.addListener('data', function(data){
buffer.write(data.toString());
});
另一方面,我需要插座保持打开状态,这样我就不能调用“结束”事件

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


另外,感谢您抽出宝贵的时间

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

IrcConnection.prototype.parseData=函数(数据){
var行,行,i;
data=data.replace(“\r\n”,“\n”);
这个.buffer+=数据;
lines=this.buffer.split(“\n”);
此参数为“=”;
/*如果最后一行不完整,请将其放回缓冲区*/
如果(行[lines.length-1]!=''){
this.buffer=行[lines.length-1];
}
/*从数组中删除\n最后一行或不完整的行*/
线=线.拼接(0,线.长度-1);
对于(i=0;i
我尝试了类似的方法,在某种程度上它是有效的,顺便说一句,我更喜欢你的代码而不是我的,但是我有一些丢失的数据。我认为问题在于node.js说“当可读流发出‘数据’事件时,如果没有侦听器,数据将丢失。”。不过,我将试用您的代码实现,看看它是否能修复它。感谢您的回复。解决这个问题的一个方法是确保在连接套接字之前连接
数据
事件侦听器。这是一个非常愚蠢的问题,但您的程序中的IrcConnection是什么?它是一个构造函数(实际上,它是一个CoffeeScript类),用于管理IRC连接。我只列出了响应
数据
事件的函数,但它还有处理其他事件和管理套接字状态的其他函数。