Настроить работу соединений пакета 'net'
нужно чтобы клиент каждый раз не создавал и не убивал соединение на каждую итерацию, СЕРВЕР ТРОГАТЬ НЕЛЬЗЯ. Вкратце по коду: происходит перебор массива и на каждую итерацию создается соединение(у сервера максимум 2 соединения), и отправляется на сервер слово из массива, сервер обрабатывает запрос и отправляет клиенту ответ, клиент получает ответ, закрывает соединение и выводит в консоль обработанный ответ, и так далее до конца массива. Код клиента:
const net = require('net');
const vacabulary = ['one','two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'red', 'yellow', 'blue', 'white', 'black'];
(async () => {
for (let i = 0; i < vacabulary.length; ++i){
try {
const res = await getTranslate(vacabulary[i]);
console.log(res[0] + ' -> ' + res[1]);
} catch (err) {
console.log(err);
}
}
})();
async function getTranslate(word){
return new Promise((resolve, reject) => {
try{
const client = net.createConnection({port: 1337});
client.on('connect', () => client.write(word));
client.on('data', (response) => {
resolve([word, response.toString()]);
client.end();
});
client.on('error', (error) => {
console.log(error);
client.end();
});
} catch (err) {
reject(err);
}
});
}
Код сервера:
const net = require('net');
const server = new net.Server()
server.maxConnections = 2;
server.on('connection', (socket) => {
socket.on('data', (data) => {
data = data.toString();
setTimeout(() => {
socket.write(data.toUpperCase());
}, 5000);
});
});
server.on('listening', () => {
console.log('Server started')
});
server.on('error', (e) => {
if (e.code === 'EADDRINUSE') {
console.log('Address in use, check if port 1337 is occupied and restart server. Exiting...');
process.exit(1);
}
});
server.listen(1337, '127.0.0.1');