scan static method
Scan for remote sessions on common ports.
Implementation
static Future<List<RemoteSessionInfo>> scan({
String subnet = '127.0.0.1',
List<int> ports = const [3100, 3101, 3102, 3103, 3104],
Duration timeout = const Duration(seconds: 2),
}) async {
final results = <RemoteSessionInfo>[];
for (final port in ports) {
try {
final client = HttpClient();
client.connectionTimeout = timeout;
final request = await client.getUrl(
Uri.parse('http://$subnet:$port/api/status'),
);
final response = await request.close();
if (response.statusCode == 200) {
final body = await response.transform(utf8.decoder).join();
final json = jsonDecode(body) as Map<String, dynamic>;
results.add(
RemoteSessionInfo(
sessionId: 'discovered_${subnet}_$port',
hostId: subnet,
displayName: json['displayName'] as String? ?? '$subnet:$port',
state: RemoteSessionState.connected,
connectionType: RemoteConnectionType.direct,
connectedAt: DateTime.now(),
remoteAddress: subnet,
remotePort: port,
model: json['model'] as String?,
metadata: json,
),
);
}
client.close();
} catch (_) {
// Host/port not available.
}
}
return results;
}