У меня есть фрагмент кода, работающий в узле js, который читает входящие данные через сокеты.информация отображается на консоли, что полезно, но я также хочу записать ее в текстовый файл для дальнейшего анализа.Однако, когда я настроил код, он работал, но просто продолжал перезаписывать содержимое файла.Я изменил его, пытаясь убедиться, что текстовый файл не перезаписывается постоянно.Теперь я получаю ошибку «запись после завершения».Я приложил код ниже.Мне бы хотелось, чтобы исходные данные в переменной «data» были сохранены в текстовом файле.было бы здорово.Спасибо, ребята
Load the TCP Library
var net = require('net');
var fs = require('fs');
// Keep track of the chat clients
var clients = [];
var tcpport = 13000;
var tcphost;
var wstream = fs.createWriteStream('myOutput.txt');
// Start a TCP Server
net.createServer(function (socket) {
// Identify this client
socket.name = socket.remoteAddress + ":" + socket.remotePort;
// Put this new client in the list
clients.push(socket);
// Send a nice welcome message and announce
console.log("Welcome " + socket.name);
console.log(socket.name + " joined");
// Handle incoming messages from clients.
socket.on('data', function (data) {
console.log('Incoming Data: ' + data.toString());
wstream.write(data.toString());
wstream.end();
var str = data.toString().split("@");
if (str[1] == 'Pong'){
broadcast('AnnouncerKit@AckPong@$');
broadcast('AnnouncerKit@Ping@$');
}
if (str[1]== 'AckPing'){
broadcast('AnnouncerKit@GetInfo@$');
}
if (str[1]== 'Store'){
broadcast('AnnouncerKit@AckStore@'+str[str.length-2]+'@$');
//console.log(bibs);
}
});
// Remove the client from the list when it leaves
socket.on('end', function () {
clients.splice(clients.indexOf(socket), 1);
console.log(socket.name + " left");
});
// Send a message to all clients
function broadcast(message) {
clients.forEach(function (client) {
client.write(message);
});
// Log it to the server output too
console.log('Outgoing Data: ' + message);
}
}).listen(tcpport);
console.log("TCP server running at port " + tcpport);
enter code here
Также просто для справки, вот рабочий код, но он перезаписывается.
// Load the TCP Library
var net = require('net');
// Keep track of the chat clients
var clients = [];
var tcpport = 13000;
var tcphost;
// Start a TCP Server
net.createServer(function (socket) {
var fs = require('fs');
// Identify this client
socket.name = socket.remoteAddress + ":" + socket.remotePort;
// Put this new client in the list
clients.push(socket);
// Send a nice welcome message and announce
console.log("Welcome " + socket.name);
console.log(socket.name + " joined");
// Handle incoming messages from clients.
socket.on('data', function (data) {
console.log('Incoming Data: ' + data.toString());
var wstream = fs.createWriteStream('myOutput.txt');
wstream.write(data.toString());
wstream.end();
var str = data.toString().split("@");
if (str[1] == 'Pong'){
broadcast('AnnouncerKit@AckPong@$');
broadcast('AnnouncerKit@Ping@$');
}
if (str[1]== 'AckPing'){
broadcast('AnnouncerKit@GetInfo@$');
}
if (str[1]== 'Store'){
broadcast('AnnouncerKit@AckStore@'+str[str.length-2]+'@$');
//console.log(bibs);
}
});
// Remove the client from the list when it leaves
socket.on('end', function () {
clients.splice(clients.indexOf(socket), 1);
console.log(socket.name + " left");
});
// Send a message to all clients
function broadcast(message) {
clients.forEach(function (client) {
client.write(message);
});
// Log it to the server output too
console.log('Outgoing Data: ' + message);
}
}).listen(tcpport);
console.log("TCP server running at port " + tcpport);
И полученный результат в текстовом файле
Finish@Store@000064919:13:36.505 1 03 155641803211E@000089619:13:36.826 1 0F 155661803213D@683@$