我目前正在使用Flutter HTTP package来处理对运行Web服务器的ESP 32的各种请求。该设备通过mDNS查找在我的本地网络中找到。使用该软件包的应用程序应该主要在Web上运行,但我也想支持桌面,至少在开发期间。由于某种原因,我在桌面平台(Linux)上建立低延迟连接时遇到了麻烦。
当运行Web构建时,第一个HTTP请求通常需要更长的时间(~5- 10秒),但每个连续的请求都可以在几毫秒内处理。然后保持这种状态,即使在较长的不活动时间之后。
然而,当运行桌面构建时,几秒钟的不活动会导致下一个请求再次花费很长时间。
下面是我用来为请求计时的代码片段。(client是一个类成员)
ElevatedButton(
onPressed: () async {
print("Start stopwatch");
final stopwatch = Stopwatch()..start();
var response =
await _client.get(Uri.http('MYDOMAIN.local', 'sys/'));
stopwatch.stop();
print(
'Stop stopwatch, elapsed ms ${stopwatch.elapsedMilliseconds}');
print('Response status: ${response.statusCode}');
print('Response body: ${response.body}');
},
child: const Text('http.Client() request'),
),
当然,这两个平台的实现方式会有很大的不同,所以我知道比较这两个平台是很困难的。我仍然想知道我是否能以某种方式在桌面构建中实现Web行为。
/edit
显然,这是一个mDNS解析问题,与Flutter无关。
https://askubuntu.com/questions/1279792/local-hostname-resolution-is-slow-on-20-04
1条答案
按热度按时间kuhbmx9i1#
为了方便以后的参考,这个问题与我Arch安装的默认nsswitch配置有关。最终帮助我解决的是Avahi上的Arch wiki,特别是主机名解析段落。在注解中说禁用IPv6可以帮助解决减速问题,在我的情况下确实如此。