import 'package:web_socket_channel/web_socket_channel.dart'; class Channel { static Channel? _instance; WebSocketChannel? _channel; Channel._(); factory Channel() { _instance ??= Channel._(); return _instance!; } Future connect() async { if (_channel != null && _channel!.closeReason == null) { return _channel!; } _channel = WebSocketChannel.connect( Uri.parse('ws://localhost:8080/'), ); await _channel!.ready; _channel!.stream.listen((event) { print(event); }); _channel!.sink.add({ "init": "INIT", }); return _channel!; } static Future send(dynamic data) async { final channel = Channel(); await channel.connect(); channel._channel!.sink.add(data); return channel; } static Future init() async { final channel = Channel(); await channel.connect(); return channel; } }