[英]Understanding the WriteStream in Node.js
最近,我使用Node.js和Socket.IO编写了一个小型的多房间聊天应用程序,并且根据发送消息的房间将它们记录到不同的文件中。此刻,我正在使用许多writeStreams(每个房间一个)来存档此功能,但是虽然它起作用了,但我一直在想,这是否实际上是应该使用writeStreams的方式。
我的担忧:
我想我的问题是...在这种情况下,可以/应该将writeStreams用于记录目的吗? 那些资源实际上是在等待输入时占用资源吗?还是节省大量时间来开放资源?
关于第2点,我可以很快:当您在writeStream上调用.end()
时,流不再接受新的写入,但是确实完成了将其拥有的数据写入文件系统。 因此,您不必担心丢失聊天记录的一部分-除非当然发生错误(为此,请侦听流的“错误”事件)。
关于第1点,我认为保持文件系统流长时间打开没有任何问题。 例如,许多应用程序都这样做来写入日志。 我确实在您的设置中看到一个可能的问题,就是随着聊天系统处理的数据量的增加,生成聊天日志的速度可能会更快,然后您可以将其写入文件系统。 如果发生这种情况,您的流将开始缓冲越来越多的数据,最终您的进程将耗尽内存并崩溃。 当然,这取决于您的数据量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.