我目前正在开发一个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);
此代码在第一个请求时挂起。根据{{1}},请求甚至不会离开我的机器。奇怪的是,当我在URL中使用IP地址而不是域名时,请求工作正常。所以,我认为这个问题与DNS查找有某种关系。有什么想法吗?
编辑:在纯Node.js中运行此代码时,问题不会出现。
编辑:此问题仅出现在Linux上。