[英]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.