我决定用电子js写一个泥客户端。 Mud是一款基于文本的RPG游戏,使用telnet协议。这是我到目前为止的代码(我刚开始使用nodejs)
socket.pipe(input).on('data'...
目前我的问题是,socket.pipe(input).on('data', function(chunk) {
console.log(chunk.toString());
console.log("testing\n\r");
});
不会在每一行上触发,但会返回多行。有时这些块不会在新的换行符中破坏。
data
上面的代码会给出下面的结果。 #############################################################################
##[ --- Welcome to Aardwolf MUD --- ]##########################
##[ ]##########################
##[ Players Currently Online: 3 ]##########################
##[ ]##########################
##[ Game Last Rebooted on 06 Jun 18:21:36 ]##########################
#############################################################################
######## #######
######## #######
######## #######
######## _____ _____ ____ _____ ____ ___ ____ _____ #######
######## |_ _| ____/ ___|_ _| | _ \ / _ \| _ \_ _| #######
######## | | | _| \___ \ | | | |_) | | | | |_) || | #######
######## | | | |___ ___) || | | __/| |_| | _ < | | #######
######## |_| |_____|____/ |_| |_| \___/|_| \_\|_| #######
######## #######
######## #######
######## #######
##
testing
###### #######
######## #######
#############################################################################
-----------------------------------------------------------------------------
Enter your character name or type 'NEW' to create a new character
-----------------------------------------------------------------------------
What be thy name, adventurer?
testing
事件被触发2次。
{{1}}
所以我的问题是,我怎么能在每一行/每行上触发事件?我可以分割块,但是如果块没有以换行结束的话,我如何连接不同的块呢?
或许我的方法是100%错误的。这几乎是我的第一个nodejs行。
答案 0 :(得分:2)
如果有人想知道。解决方案非常简单。我只是走错了道路:
"use strict";
const net = require('net');
const socket = net.createConnection(6555, '198.178.123.109', ()=> {
process.stdin.pipe(socket);
});
let line = '';
socket.on('data', chunk => {
let str = chunk.toString();
for (let i = 0, len = str.length; i < len; i++) {
let chr = str[i];
line += chr;
process.stdout.write(chr);
if (/[\n\r]$/.test(chr)) {
process.stdout.write(line);
line = '';
}
}
});