最近我使用Node.js和Socket.IO编写了一个小型多房间聊天应用程序,并根据发生的房间将发送的消息记录到不同的文件中。目前我正在使用多个writeStream(一个用于每个房间)存档这个功能,但是当它工作时,我一直想知道这是否真的是如何使用writeStreams。
我的担忧:
我想我的问题是......在这种情况下,可以/应该将writeStream用于记录目的吗?这些是在等待输入时实际占用资源还是保存为长时间打开大量数据?
答案 0 :(得分:0)
关于第2点,我可以很快:当你在writeStream上调用.end()
时,流不再接受新的写入,但会完成将它拥有的数据写入文件系统。因此,您不必担心丢失部分聊天记录 - 除非当然发生错误(为此,请收听流的'错误'事件)。
关于第1点:我认为保持文件系统流打开更长时间没有任何问题。例如,许多应用程序都会这样做来编写日志。我在您的设置中看到的一个可能的问题是,随着聊天系统处理的数据量的增长,您可以更快地生成聊天记录,然后将其写入文件系统。如果发生这种情况,您的流将开始缓冲越来越多的数据,最终您的进程将耗尽内存并崩溃。当然这取决于您的数据量。