feat:增加登录页
This commit is contained in:
46
lib/services/webSocket_service.dart
Normal file
46
lib/services/webSocket_service.dart
Normal file
@@ -0,0 +1,46 @@
|
||||
import 'dart:async';
|
||||
import 'package:web_socket_channel/web_socket_channel.dart';
|
||||
|
||||
class WebSocketService {
|
||||
static final WebSocketService _instance = WebSocketService._();
|
||||
|
||||
factory WebSocketService() => _instance;
|
||||
|
||||
WebSocketService._();
|
||||
|
||||
WebSocketChannel? _channel;
|
||||
|
||||
final _messageController = StreamController<String>.broadcast();
|
||||
final _errorController = StreamController<Object>.broadcast();
|
||||
|
||||
Stream<String> get messages => _messageController.stream;
|
||||
|
||||
Stream<Object> get errors => _errorController.stream;
|
||||
|
||||
bool get isConnected => _channel != null;
|
||||
|
||||
void connect(String url) {
|
||||
if (_channel != null) return;
|
||||
|
||||
_channel = WebSocketChannel.connect(Uri.parse(url));
|
||||
|
||||
_channel!.stream.listen(
|
||||
(message) => _messageController.add(message.toString()),
|
||||
onError: (error) => _errorController.add(error),
|
||||
onDone: () => _errorController.add('WebSocket closed'),
|
||||
);
|
||||
}
|
||||
|
||||
void send(String message) {
|
||||
if (_channel == null) {
|
||||
_errorController.add('WebSocket not connected');
|
||||
return;
|
||||
}
|
||||
_channel!.sink.add(message);
|
||||
}
|
||||
|
||||
void disconnect() {
|
||||
_channel?.sink.close();
|
||||
_channel = null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user