Ich entschied mich, einen Mud-Client mit Electron js schreiben. Mud ist ein textbasiertes RPG-Spiel, das Telnet-Protokoll verwendet. Hier ist mein Code so viel (Ich habe gerade angefangen mit NodeJS)Wie Telnet-Daten mit Nodejs analysieren
"use strict";
const net = require('net');
const TelnetInput = require('telnet-stream').TelnetInput;
const TelnetOutput = require('telnet-stream').TelnetOutput;
let socket = net.createConnection(6555, '198.178.123.109', function() {
let input = new TelnetInput();
let output = new TelnetOutput();
//socket.pipe(input).pipe(process.stdout);
process.stdin.pipe(output).pipe(socket);
socket.pipe(input).on('data', function(chunk) {
chunk = chunk.toString() + 'end';
let split = chunk.match(/[^\r\n]+/g);
split.forEach(function(line) {
if (line.match(/end/) == null) {
line = line + ">--\n\r";
} else {
line = line.replace('end', '');
}
process.stdout.write(line);
});
});
input.on('will', function(option) {
if (option == 201) {
output.writeDo(201);
var support = new Buffer(1);
support.write('Core.Supports.Set [ "Room 1", "Char 1", "Comm 1", "Group 1" ]', 0);
output.writeSub(201, support);
}
});
input.on('sub', function(option, buffer) {
// console.log(option);
// console.log(buffer.toString());
});
});
Im Moment mein Problem ist, dass socket.pipe(input).on('data'...
nicht in jeder Zeile auslöst, aber es gibt mehrere Zeilen. Und manchmal brechen diese Brocken nicht bei einem neuen Zeilenumbruch.
socket.pipe(input).on('data', function(chunk) {
console.log(chunk.toString());
console.log("testing\n\r");
});
Der obige Code würde das folgende Ergebnis liefern. data
Ereignis wird 2 mal ausgelöst.
Also meine Frage ist, wie könnte ich ein Ereignis auf jeder/Zeile Zeile auslösen? Ich kann die Chunks teilen, aber wie stelle ich verschiedene Chunks zusammen, falls der Chunk nicht mit einem Zeilenumbruch endet?
Oder vielleicht ist mein Ansatz 100% falsch. Das sind ziemlich meine ersten nodejs Zeilen.