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'); } } }