所以,我在python(使用twisted)设置中有一个聊天服务器,用户使用telnet连接。问题是,当有人在其他人输入消息时发送消息时,发送的消息将覆盖正在键入的消息。我目前的解决方案是删除光标所在的行(使用\033[2K
ANSI转义序列,然后是\r
),并将其替换为消息,但显然,人们不会喜欢它每当其他人发送消息时,他们的草稿消息就会被删除我试图使用转义序列
但是,草稿消息会被发送的消息覆盖,而不是被推到一边。所以我的问题是,有没有办法在草稿之前插入已发送的消息而不覆盖它,然后将光标返回到消息以进一步输入?
答案 0 :(得分:0)
我设法避免创建自己的客户端,而是使用stty -icanon && nc {CHAT IP} {CHAT PORT}
。在服务器端,我创建了一个缓冲区来保存正在键入的消息,并相应地对其进行编辑,并在收到退格键的字符代码时重新打印它。当它收到箭头键的字符代码时,它会跟踪光标并发送转义码以相应地移动光标。