繁体   English   中英

使用ably flutter package,如何订阅和收听Laravel和Flutter的活动?

[英]Using the ably flutter package, how can I subscribe to and listen to an event in Laravel and Flutter?

我正在使用 Laravel 和 flutter 开发聊天应用程序。我正在使用 ably_flutter package 使其实时。 通道创建成功,但监听事件或消息失败。

final clientOptions = ably.ClientOptions( 
      key: 'rVPjew.ydfBPA:JqRRY9JI49_L9l8CsfvMxXuxhMeyQzgEo6apWE');

 subscribeAbly() async {
    ably.Realtime realtime = ably.Realtime(options: clientOptions);

    realtime.connection
        .on(ably.ConnectionEvent.connected)
        .listen((ably.ConnectionStateChange stateChange) async {
print(stateChange.current)// connected
      ably.RealtimeChannel channel = realtime.channels.get('public.room');
      channel.subscribe(name: 'message.new').listen((ably.Message message) {
        print("message is fired");//it's not working
        final data = jsonEncode(message.data);
        final response = jsonDecode(data)['message'] as Map<String, dynamic>;
        setState(() {
          mapData.insert(0, {"message": "From ably", "is_sender": false});
        });
      });
    });

   @override
   initState(){
   super.initState();
    subscribeAbly()
 }      

我正在使用 Flutter 2.8 和 ably_flutter 1.2.15 任何帮助将不胜感激。

作为调试步骤,如果您使用channel.publish()从 flutter 向该频道发布消息,您会收到事件吗?

如果不是,那么您在 Flutter 中的设置可能有问题。我尝试的一件事是将realtime object 声明移到异步 function scope 之外,并将其设为属性。

除此之外 - 再次作为调试步骤尝试订阅频道上的所有事件:

channel.subscribe()

代替:

channel.subscribe(name: 'message.new')

并仔细检查频道名称是否正确,并且您已设置 Laravel 以将消息发布到同一频道:

realtime.channels.get('public.room')

能否请您详细说明您是如何在 laravel 端发布消息的?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM