Flutter pusher with Laravel echo

  • Fine app_key from websocket url protocal of pusher on web:
wss://ws-mt1.pusher.com/app/xxxxxxxxxxxxxxxxxxxx?protocol=7&client=js&version=7.0.0&flash=false=> Pusher key = xxxxxxxxxxxxxxxxxxxx

Implement on Flutter

  • android/app/build.gradle
android {
buildTypes {
debug {
debuggable true
signingConfig signingConfigs.debug
}
release {
debuggable false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
}
  • android/app/proguard-rules.pro
# https://pub.dev/packages/pusher_client-keep class com.github.heywhy.flutter_pusher.** { *; }
  • pubspec.yaml
flutter_pusher_client: ^0.3.1laravel_echo: ^0.2.8
  • Init Laravel echo pusher
/// Init pusher
Future<void> initPusher() async {
final PusherOptions options = PusherOptions(
auth: PusherAuth(
'https://com.nhancv.live/api/broadcasting/auth',
),
encrypted: true,
cluster: 'xy1');
FlutterPusher pusher;
pusher = FlutterPusher('xxxxxxxxxxxxxxxxxxxx', options, enableLogging: true,
onConnectionStateChange: (ConnectionStateChange state) async {
print('stateChange ${state.toJson()}');
if (pusher != null && state.currentState == 'CONNECTED') {
final String socketId = pusher.getSocketId();
print('pusher socket id: $socketId');// Laravel echo will subscribe the channel with full namespace.
// Ex: App\Events
final Echo echo = Echo(<String, dynamic>{
'broadcaster': 'pusher',
'client': pusher,
});
echo.channel('posting').listen('PostCreated',
(Map<String, dynamic> message) {
print(message);
final Message msg = Message.fromJson(message);
messages.add(msg);
});
}
});
}

@nhancv

Leave a Reply

Your email address will not be published.Required fields are marked *