Node.js nodejs[通过require(';Net';)]:如果我不调用socket.end()如何知道套接字接收所有数据

Node.js nodejs[通过require(';Net';)]:如果我不调用socket.end()如何知道套接字接收所有数据,node.js,socket.io,Node.js,Socket.io,许多人说:可以使用socket.on('end',…)获取所有块,但我希望socket保持连接,这样事件'end'就不会触发。 我如何知道我在socket.on('data',…)上保存了所有数据?这取决于底层协议。您必须对数据进行某种格式/布局,以便知道如何解析它。例如,您可能有换行符分隔的消息,或者您可能有长度前缀的消息。这意味着我必须在发送每一条消息之前附加一些“消息格式”?但我发送的文件数据类似于“client.send(fileData)”,而不是逐条发送。当socket.on('da

许多人说:可以使用socket.on('end',…)获取所有块,但我希望socket保持连接,这样事件'end'就不会触发。
我如何知道我在socket.on('data',…)上保存了所有数据?

这取决于底层协议。您必须对数据进行某种格式/布局,以便知道如何解析它。例如,您可能有换行符分隔的消息,或者您可能有长度前缀的消息。

这意味着我必须在发送每一条消息之前附加一些“消息格式”?但我发送的文件数据类似于“client.send(fileData)”,而不是逐条发送。当socket.on('data',..)被多次调用时,nodej帮助我拆分它们。如果是这种情况,那么很可能数据没有任何结构。如果在传输数据后不关闭套接字,则需要选择某种协议。如果是文本数据,您可以使用换行符分隔的JSON,例如,对于二进制数据,您可以使用一种样式的协议。有许多不同的选择。