49 lines
941 B
Dart
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;
|
|
}
|
|
} |