connect_controller.dart 1019 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import 'package:get/get.dart';
  2. import 'package:naiyouwl/app/controller/core.dart';
  3. import 'package:web_socket_channel/io.dart';
  4. import 'dart:convert';
  5. import 'package:naiyouwl/app/bean/connect.dart';
  6. class ConnectController extends GetxController {
  7. final CoreController coreController = Get.find<CoreController>();
  8. late IOWebSocketChannel channel;
  9. var connect = Rx<Connect?>(null);
  10. @override
  11. void onInit() {
  12. super.onInit();
  13. connectWebSocket();
  14. }
  15. void connectWebSocket() {
  16. channel = coreController.fetchConnectionsWs();
  17. channel.stream.listen((message) {
  18. try {
  19. final data = jsonDecode(message);
  20. if (data != null && data is Map<String, dynamic>) {
  21. connect.value = Connect.fromJson(data);
  22. } else {
  23. connect.value = null;
  24. }
  25. } catch (e) {
  26. print('解析WebSocket消息时出错: $e');
  27. connect.value = null;
  28. }
  29. });
  30. }
  31. @override
  32. void onClose() {
  33. channel.sink.close();
  34. super.onClose();
  35. }
  36. }