В настоящее время я разрабатываю приложение Electron, которое прослушивает сокет TCP и отправляет запросы на REST-сервер после получения данных.
Для тестирования я использую следующий код:
const net = require('net');
const fetch = require('node-fetch');
const server = net.createServer(connection => {
connection.setEncoding('utf8');
connection.on('data', data => {
handleData(data).then(() => connection.end());
});
});
const handleData = data => {
return Promise.resolve()
.then(() => test(1))
.then(() => test(2))
.then(() => test(3))
.then(() => test(4))
.then(() => test(5));
};
const test = id => {
return fetch(`https://server.domain.name/api/v1/software/${id}`)
.then(response => response.json())
.then(json => {
console.log(json);
});
};
const socketHost = '0.0.0.0';
const socketPort = 1337;
server.listen(socketPort, socketHost);
Этот код зависает при первом запросе. По словам tcpdump
, запрос даже не покидает мою машину. Странная вещь, когда я использую IP-адрес в URL-адресе вместо имени домена, запросы работают нормально. Итак, я полагаю, что эта проблема как-то связана с поиском DNS. Есть идеи?
Редактировать: При запуске этого кода в чистом Node.js проблема не появляется.
Редактировать: Эта проблема появляется только в Linux.