import 'dart:io' as io; import 'dart:typed_data'; // import 'dart:html' as html; import 'package:wukongimfluttersdk/common/logs.dart'; import 'package:wukongimfluttersdk/manager/my_wk_socket_base.dart'; class MyWKSocket implements MyWkSocketBase { io.Socket? _socket; // 将 _socket 声明为可空类型 bool _isListening = false; static MyWKSocket? _instance; MyWKSocket._internal(this._socket); factory MyWKSocket.newSocket(io.Socket socket) { _instance ??= MyWKSocket._internal(socket); return _instance!; } @override void close() { _isListening = false; _instance = null; try { if (_socket != null) { _socket?.close(); _socket?.destroy(); } } finally { _socket = null; // 现在可以将 _socket 设置为 null } } @override void listen({ required Function(Uint8List data) onData, required Function() onOpen, required Function() error, }) { if (!_isListening && _socket != null) { _socket!.listen(onData, onError: (err) { Logs.debug('socket断开了${err.toString()}'); }, onDone: () { close(); // 关闭和重置 Socket 连接 error(); }); _isListening = true; } } @override send(Uint8List data) { try { if (_socket != null) { _socket?.add(data); // 使用安全调用操作符 } } catch (e) { Logs.debug('发送消息错误$e'); } } }