boardgames_app/lib/network/channel.dart
2025-06-14 14:28:16 +02:00

49 lines
941 B
Dart

import 'package:web_socket_channel/web_socket_channel.dart';
class Channel {
static Channel? _instance;
WebSocketChannel? _channel;
Channel._();
factory Channel() {
_instance ??= Channel._();
return _instance!;
}
Future<WebSocketChannel> 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<Channel> send(dynamic data) async {
final channel = Channel();
await channel.connect();
channel._channel!.sink.add(data);
return channel;
}
static Future<Channel> init() async {
final channel = Channel();
await channel.connect();
return channel;
}
}