代码之家  ›  专栏  ›  技术社区  ›  ivanacorovic

颤振推进器Websocket包不工作

  •  0
  • ivanacorovic  · 技术社区  · 4 年前

    我有一个后端Laravel应用程序,它使用Pusher来通知。我想在我的Flutter应用程序(iOS和Android)中显示通知。我发现了 https://pub.dev/packages/pusher_websocket_flutter/ this tutorial ,而且我没有错误(无论我为APP_键放了什么,这肯定是错误的),但我从来没有得到任何显示。

    有人设法让这个工作起来了吗,还是我应该切换到firebase?

    这是我的推手_服务.dart:

    import 'package:flutter/services.dart';
    import 'package:pusher_websocket_flutter/pusher.dart';
    import 'dart:async';
    
    class PusherService {
      Event lastEvent;
      String lastConnectionState;
      Channel channel;
    
      StreamController<String> _eventData = StreamController<String>();
      Sink get _inEventData => _eventData.sink;
      Stream get eventStream => _eventData.stream;
    
      Future<void> initPusher() async {
        try {
          await Pusher.init('XXX', PusherOptions(cluster: 'XX'), enableLogging: true);
          print("Pusher initialized");
        }
        on PlatformException catch (e) {
           print(e.message);
        }
      }
    
      void connectPusher() {
    
        Pusher.connect(
            onConnectionStateChange: (ConnectionStateChange connectionState) async {
              lastConnectionState = connectionState.currentState;
              print("Pusher connected");
            }, onError: (ConnectionError e) {
          print("Error: ${e.message}");
        });
      }
    
      Future<void> subscribePusher(String channelName) async {
        channel = await Pusher.subscribe(channelName);
        print("Pusher subscribed to channel");
      }
    
      void unSubscribePusher(String channelName) {
        Pusher.unsubscribe(channelName);
      }
    
      void bindEvent(String eventName) {
        channel.bind(eventName, (last) {
          final String data = last.data;
          _inEventData.add(data);
    
        });
        print("Pusher data binded");
      }
    
      void unbindEvent(String eventName) {
        channel.unbind(eventName);
        _eventData.close();
      }
    
      Future<void> firePusher(String channelName, String eventName) async {
        await initPusher();
        connectPusher();
        await subscribePusher(channelName);
        bindEvent(eventName);
      }
    
    }
    

    我的推手_测试.dart:

    import 'package:flutter/material.dart';
    import 'package:chalet/services/pusher_service.dart';
    import 'package:pusher/pusher.dart';
    import 'dart:async';
    
    class PusherTest extends StatefulWidget {
      @override
      _PusherTestState createState() => _PusherTestState();
    }
    
    class _PusherTestState extends State<PusherTest> {
    
      PusherService pusherService = PusherService();
      @override
      void initState() {
        pusherService = PusherService();
        pusherService.firePusher('public', 'create');
        testPusher();
        super.initState();
    
      }
    
      @override
      void dispose() {
        pusherService.unbindEvent('create');
        super.dispose();
      }
    
    
      @override
      Widget build(BuildContext context) {
    
        return Scaffold(
          appBar: AppBar(),
          body: Center(
            child: StreamBuilder(
              stream: pusherService.eventStream,
              builder: (BuildContext context, AsyncSnapshot snapshot) {
                if (!snapshot.hasData) {
                  return CircularProgressIndicator();
              
                }
                return Container(
                  child: Text(snapshot.data),
                );
              },
            ),
          ),
        );
      }
    }
    

    我查过了我的快照.连接状态总是在等待。

    0 回复  |  直到 4 年前