Node.js readline.on('line',fn())看不到换行符

问题描述 投票:0回答:1

我试图使用readline和net编写一个简单的终端IRC客户端。

使用client.write()发送命令非常正常,除非我在readline.on('line' (cb) => cbstuff)中执行此命令,但我不确定为什么。

我对可能的问题有两种想法,但不知道如何解决其中的任何一种:我的第一个猜测是,我必须更改rl.createInterface()的某些内容才能与客户端一起使用,而不是stin / stdout。我的第二个怀疑是,由于\ n或\ r \ n在某处被过滤/转义,因此readline从未看到回车符。另一方面,直接在client.write()中发送\ r \ n可以像多行消息一样工作。

这是我的代码:

const net = require('net');
const fs = require('fs');
const readline = require('readline');

const host = 'irc.freenode.net';
const port = 6666;
const client = new net.Socket();

rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

client.connect(port, host, () => {
    console.log(`CONNECTED TO: ${host}:${port}\n`);
    client.write('USER foo bar batz boo\r\nNICK nodetest123\r\n');
    client.write('JOIN #testchan123\r\n');

    rl.on('line', cmd => client.write(cmd));
    // rl.prompt(); doesn't help
});

client.on('data', data => {
    console.log(`DATA: ${data}`);
    fs.appendFile("log.txt", data, err => {
        if (err)
            return console.log(err);
    });
});

client.on('error', error => console.log(error));
client.on('close', () => console.log('Connection closed'));
javascript node.js sockets readline irc
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.