49 lines
1022 B
Dart
49 lines
1022 B
Dart
import 'dart:html';
|
|
import 'dart:convert';
|
|
|
|
class Backend {
|
|
static WebSocket? _socket;
|
|
static String? _url;
|
|
|
|
static void setup(String url) {
|
|
_url = url;
|
|
connect();
|
|
}
|
|
|
|
static void auth(username) {
|
|
_socket!.send(
|
|
json.encode({'username': username})
|
|
);
|
|
}
|
|
|
|
static void connect() {
|
|
_socket = WebSocket(_url!);
|
|
_socket!.onOpen.listen((event) {
|
|
print('Connected to the WebSocket server');
|
|
auth("the-user");
|
|
ping();
|
|
});
|
|
_socket!.onError.listen((event) {
|
|
print('Error: $event');
|
|
_reconnect();
|
|
});
|
|
_socket!.onClose.listen((event) {
|
|
print('Disconnected. Attempting to reconnect...');
|
|
_reconnect();
|
|
});
|
|
}
|
|
|
|
static void _reconnect() {
|
|
Future.delayed(Duration(seconds: 5), () {
|
|
connect();
|
|
});
|
|
}
|
|
|
|
static void ping() {
|
|
if (_socket != null && _socket!.readyState == WebSocket.OPEN) {
|
|
final data = json.encode({'path': 'ping'});
|
|
_socket!.send(data);
|
|
print('Ping sent: $data');
|
|
}
|
|
}
|
|
} |