Imgkl / EventFlux

A Dart package for efficient handling of server-sent event streams with easy connectivity and data management.
https://pub.dev/packages/eventflux
MIT License
25 stars 8 forks source link

What i'm doing wrong ? No onSuccessCallBack return #21

Closed joaofulgencio closed 3 months ago

joaofulgencio commented 4 months ago

Hi i'm building a simple college project, and i get here on EventFlux, i liked the example and i'm trying to use it

Here what i'm doing

`import 'dart:async';

import 'package:flutter/material.dart'; import 'package:logging/logging.dart'; import 'package:projetointegradoriiiflutter/http/funcionarios.dart';

class FuncionariosPage extends StatefulWidget { const FuncionariosPage({super.key});

@override _FuncionariosPageState createState() => _FuncionariosPageState(); }

class _FuncionariosPageState extends State { final FuncionariosSSE _funcionariosSSE = FuncionariosSSE(); final Logger _logger = Logger('FuncionariosPage'); late StreamSubscription<List> _subscription; List _funcionarios = [];

@override void initState() { super.initState(); _logger.info('Iniciando a página de funcionários'); _subscription = _funcionariosSSE.funcionariosStream.listen((event) { _logger.info('Dados recebidos na página: $event'); setState(() { _funcionarios = event; }); }); _logger.info('Iniciando a conexão SSE'); _funcionariosSSE.connectSSE(0); }

@override void dispose() { _subscription.cancel(); _funcionariosSSE.dispose(); super.dispose(); }

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Teste'), ), body: _funcionarios.isEmpty ? const Center( child: CircularProgressIndicator(), ) : ListView.builder( itemCount: _funcionarios.length, itemBuilder: (context, index) { final funcionario = _funcionarios[index]; _logger.info('Renderizando funcionário: $funcionario'); return ListTile( title: Text(funcionario.nome), subtitle: Text(funcionario.email), ); }) ); } } `

`import 'dart:async'; import 'dart:convert'; import 'package:eventflux/eventflux.dart'; import 'package:logging/logging.dart';

class FuncionariosSSE { final Logger _logger = Logger('FuncionariosSSE'); final StreamController<List> _streamController = StreamController();

Stream<List> get funcionariosStream => _streamController.stream;

void connectSSE(int tipo) async { _logger.info('Starting SSE connection...'); EventFlux.instance.connect( EventFluxConnectionType.get, 'http://localhost:8080/funcionarios/0/realtime', onSuccessCallback: (EventFluxResponse? response) { _logger.info('Connected successfully'); response!.stream!.listen((event) { _logger.info('Event received: $event'); try { final List decodedList = jsonDecode(event.data); final funcionarios = decodedList.map((json) => Funcionario.fromJson(json)).toList(); _streamController.add(funcionarios); _logger.info('Data decoded successfully: $funcionarios'); } catch (e) { _logger.severe('Error decoding data: $e'); } }); }, onError: (error) { _logger.severe('Connection error: $error'); }, autoReconnect: true, reconnectConfig: ReconnectConfig( mode: ReconnectMode.linear, interval: Duration(seconds: 5), maxAttempts: 5, ), ); }

void dispose() { _streamController.close(); } }

class Funcionario { final String cpf; final String departamento; final String email; final String nome; final int tipo;

Funcionario({ required this.cpf, required this.departamento, required this.email, required this.nome, required this.tipo, });

factory Funcionario.fromJson(Map<String, dynamic> json) { return Funcionario( cpf: json['cpf'] ?? '', departamento: json['departamento'] ?? '', email: json['email'] ?? '', nome: json['nome'] ?? '', tipo: json['tipo'] ?? 1, ); } } `

My SSE endpoint is returning my data normally

and my application LOGS Are

Launching lib\main.dart on Chrome in debug mode... Waiting for connection from debug service on Chrome... This app is linked to the debug service: ws://127.0.0.1:59215/iv6W3yNu310=/ws Debug service listening on ws://127.0.0.1:59215/iv6W3yNu310=/ws Debug service listening on ws://127.0.0.1:59215/iv6W3yNu310=/ws INFO: 2024-05-26 16:09:35.597: Login efetuado com sucesso para o tipo = 0 com success = true INFO: 2024-05-26 16:09:35.597: Sucesso no login INFO: 2024-05-26 16:09:35.607: Iniciando a página de funcionários INFO: 2024-05-26 16:09:35.608: Iniciando a conexão SSE INFO: 2024-05-26 16:09:35.609: Starting SSE connection... [EventFlux] ℹ️ Connection Initiated

can anyone help me please ?

i tried use eventflux: ^2.0.1 and eventflux: ^2.0.2

same behaviour

Imgkl commented 3 months ago

Hey @joaofulgencio,

This package doesn't work on browser. There is a open issue. I am working on it. Refer #5