Matrix Homeserver Recommendations

Find, filter and benchmark public Matrix homeservers.

Features

  • Dart native
  • only two dependencies (http, matrix)
  • extensible
  • two predefined providers
  • easily compare benchmarks

Usage

import 'package:matrix_homeserver_recommendations/matrix_homeserver_recommendations.dart';

Future<int> main() async {
  print('Loading homeservers from joinMatrix.org...');
  var joinMatrixParser = JoinmatrixOrgParser();
  final homeservers = await joinMatrixParser.fetchHomeservers();

  print('Found the following homeservers:');
  for (var server in homeservers) {
    print(server);
  }

  print('Performing response time benchmark...');
  final result = await HomeserverListProvider.benchmarkHomeserver(
    homeservers,
    timeout: Duration(seconds: 10),
    includeFailed: false,
  );
  print('The following response times were captured:');
  for (var benchmark in result) {
    print(benchmark);
  }
  
  print('Proposing a homeserver based on country code...');
  var localeHomeserverParser = LocalHomeserverParser('ua');
  final localHomeserver = localeHomeserverParser.fetchHomeservers().first;
  print(localHomeserver);

  print('Example completed.');
  return 0;
}

Alternatively, you can simply implement your own server list by extending HomeserverListProvider. Please don't forget to contribute your own implementation.

Additional information

Licensed under the terms and conditions of the EUPL 1.2.