Skip to content

Commit

Permalink
fix.
Browse files Browse the repository at this point in the history
  • Loading branch information
cloudwebrtc committed Aug 19, 2024
1 parent cf097cc commit 081ae42
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 23 deletions.
1 change: 1 addition & 0 deletions lib/src/core/room.dart
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
// on subsequent runs
try {
await _regionUrlProvider?.fetchRegionSettings();
_regionUrl = await _regionUrlProvider!.getNextBestRegionUrl();
} catch (e) {
logger.warning('could not fetch region settings $e');
}
Expand Down
27 changes: 20 additions & 7 deletions lib/src/support/region_url_provider.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import 'dart:convert';
import 'dart:convert' show json;

import 'package:fixnum/fixnum.dart';
import 'package:http/http.dart' as http;

import 'package:livekit_client/livekit_client.dart';
import '../exceptions.dart';
import '../logger.dart';
import '../proto/livekit_rtc.pb.dart' as lk_models;

class RegionUrlProvider {
Expand Down Expand Up @@ -61,13 +63,24 @@ class RegionUrlProvider {

/* @internal */
Future<lk_models.RegionSettings> fetchRegionSettings() async {
http.Response regionSettingsResponse = await http
.get(Uri.parse('${getCloudConfigUrl(serverUrl)}/regions'), headers: {
var url = '${getCloudConfigUrl(serverUrl)}/regions';
http.Response regionSettingsResponse =
await http.get(Uri.parse(url), headers: {
'authorization': 'Bearer $token',
});
if (regionSettingsResponse.statusCode == 200) {
final regionSettings = lk_models.RegionSettings.fromJson(
jsonDecode(regionSettingsResponse.body));
var str = regionSettingsResponse.body;
print('Success: $str');
var mapData = json.decode(str);
var regions = (mapData['regions'] as List<dynamic>)
.map((region) => lk_models.RegionInfo(
distance: Int64(int.parse(region['distance'])),
region: region['region'],
url: region['url']))
.toList();
var regionSettings = lk_models.RegionSettings(
regions: regions,
);
lastUpdateAt = DateTime.now().microsecondsSinceEpoch;
return regionSettings;
} else {
Expand All @@ -86,7 +99,7 @@ class RegionUrlProvider {
}

String getCloudConfigUrl(Uri serverUrl) {
return '${serverUrl.scheme.replaceAll('ws', 'http')}//${serverUrl.host}/settings';
return '${serverUrl.scheme.replaceAll('ws', 'http')}://${serverUrl.host}/settings';
}
}

Expand Down
14 changes: 3 additions & 11 deletions lib/src/support/websocket.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,9 @@ import '../support/disposable.dart';
import 'websocket/io.dart' if (dart.library.html) 'websocket/web.dart';

class WebSocketException implements Exception {
final int code;
const WebSocketException._(this.code);

static WebSocketException unknown() => const WebSocketException._(0);
static WebSocketException connect() => const WebSocketException._(1);

@override
String toString() => {
WebSocketException.unknown(): 'Unknown error',
WebSocketException.connect(): 'Failed to connect',
}[this]!;
final String message;
final dynamic error;
const WebSocketException(this.message, [this.error]);
}

typedef WebSocketOnData = Function(dynamic data);
Expand Down
6 changes: 3 additions & 3 deletions lib/src/support/websocket/io.dart
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,9 @@ class LiveKitWebSocketIO extends LiveKitWebSocket {
final ws = await io.WebSocket.connect(uri.toString());
logger.fine('[WebSocketIO] Connected');
return LiveKitWebSocketIO._(ws, options);
} catch (_) {
logger.severe('[WebSocketIO] did throw ${_}');
throw WebSocketException.connect();
} catch (err) {
logger.severe('[WebSocketIO] did throw $err');
throw WebSocketException('Failed to connect', err);
}
}
}
4 changes: 2 additions & 2 deletions lib/src/support/websocket/web.dart
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ class LiveKitWebSocketWeb extends LiveKitWebSocket {
final ws = web.WebSocket(uri.toString());
ws.onOpen
.listen((_) => completer.complete(LiveKitWebSocketWeb._(ws, options)));
ws.onError
.listen((_) => completer.completeError(WebSocketException.connect()));
ws.onError.listen((e) =>
completer.completeError(WebSocketException('Failed to connect', e)));
return completer.future;
}
}

0 comments on commit 081ae42

Please sign in to comment.