【问题标题】:Prevent text from being overwritten by stream.write() in Node.js防止文本被 Node.js 中的 stream.write() 覆盖
【发布时间】:2011-05-26 21:44:31
【问题描述】:
我正在使用 Node.js 创建聊天。本质上,它使用 net 模块来创建服务器。连接到服务器的每个人都被添加到列表中。通过参与者列表向服务器 forEach()s 输入数据,并通过 .write() 将消息流式传输。不过有一个问题。如果您正在键入(并且您直接在终端窗口中键入)并且某些内容已写入您的流,则您已键入(但尚未提交)的所有内容都会被覆盖。有什么办法可以防止这种情况发生吗?我对此表示怀疑。您甚至不应该在聊天程序中使用如此简陋的东西。
【问题讨论】:
标签:
javascript
terminal
node.js
chat
【解决方案1】:
如果您使用的是低级 stdin / stdout 那么实际上您无能为力(除非您每次都清空屏幕并重新绘制自己的缓冲区)。
通常如果你想留在终端,你会使用诅咒。快速查看 modules page 会发现 Node.js 有一个 ncurses binding。
我还没有测试过,但如果你想保持老派终端,这似乎是完成事情的最快方法(也就是说,如果它在 2.5/3.x 中仍然有效)。