pusher_client_socket

Creator: coderz1093

Last updated:

0 purchases

pusher_client_socket Image
pusher_client_socket Images
Add to Cart

Description:

pusher client socket

Pusher Client Socket #
A Dart library for connecting to a Pusher server using WebSockets. This library provides an easy-to-use API for subscribing to channels, binding event listeners, and sending events to the server.
Features #

Connect to a Pusher server using WebSockets.
Available for all platforms (Android, IOS, MacOS, WindowsOS, LinuxOS, Web).
Subscribe to public, private, private encrypted, and presence channels.
Bind event listeners to handle custom and Pusher-specific events.
Automatic reconnection logic for handling connection interruptions.
Activity check mechanism to ensure the connection remains active.

Installation #
Add the following dependency to your pubspec.yaml file:
dependencies:
pusher_client_socket: ^0.0.2+1
copied to clipboard
Then run:
flutter pub get
copied to clipboard
or using pub add:
flutter pub add pusher_client_socket
copied to clipboard
Usage #
2. Import #
/// Import the pusher client
import 'package:pusher_client_socket/pusher_client_socket.dart';

/// Importing the channels
import 'package:pusher_client_socket/channels/channel.dart';
import 'package:pusher_client_socket/channels/private_channel.dart';
import 'package:pusher_client_socket/channels/private_encrypted_channel.dart';
import 'package:pusher_client_socket/channels/presence_channel.dart';
copied to clipboard
2. Initialize the connection options #


Pusher default server:
final options = PusherOptions(
key: 'PUSHER-KEY',
cluster: 'mt1',
wsPort: 80,
wssPort: 443,
authOptions: PusherAuthOptions(
endpoint: 'http://localhost/broadcasting/auth',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer AUTH-TOKEN'
}
),
autoConnect: false,
);
copied to clipboard


Specify server (e.g: Laravel/Reverb):
final options = PusherOptions(
key: 'REVERB_APP_KEY',
host: 'localhost', // REVERB_HOST
wsPort: 6001, // REVERB_PORT
encrypted: false, // (Note: enable it if you'r using wss connection)
authOptions: PusherAuthOptions(
endpoint: 'http://localhost/broadcasting/auth',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer AUTH-TOKEN'
}
),
autoConnect: false,
);
copied to clipboard


3. Initialize the client and connect #
final pusherClient = PusherClient(options);
pusherClient.onConnectionEstablished((data) {
print("Connection established - socket-id: ${pusherClient.socketId}");
});
pusherClient.onConnectionError((error) {
print("Connection error - $error");
});
pusherClient.onError((error) {
print("Error - $error");
});
pusherClient.onDisconnected((data) {
print("Disconnected - $data");
});
pusherClient.connect();
copied to clipboard
4. Subscribe to channels #
/// Subscribe to public channel
final publicChannel = pusherClient.channel('channel-1');

/// Subscribe to private channel
final privateChannel = pusherClient.channel('private-channel-2');
// or
final privateChannel = pusherClient.private('channel-2');

/// Subscribe to private encrypted channel
final privateEncryptedChannel = pusherClient.channel('private-encrypted-channel-3');
// or
final privateEncryptedChannel = pusherClient.privateEncrypted('channel-3');

/// Subscribe to presence channel
final presenceChannel = pusherClient.channel("presence-channel-4");
// or
final presenceChannel = pusherClient.presence("channel-4");
copied to clipboard
5. Listening to event #
channel.bind('EventName', (data) {
print('event received - EventName - $data');
});
copied to clipboard
6. Send trigger (in private or presence channel) #
privateChannel.trigger('client-EventName', data);
// or
privateChannel.trigger('EventName', data);
// or
presenceChannel.trigger('client-EventName', data);
// or
presenceChannel.trigger('EventName', data);
copied to clipboard
7. Unsubscribing from channel #
channel.unsubscribe();
copied to clipboard
Pusher Client Options #



Option
Type
Description




key
String
The Pusher app key used to authenticate the connection. This is a required parameter.


cluster
String?
The cluster of the Pusher server. If provided, it is used to construct the default WebSocket host.


host
String?
The custom host for the connection. If not provided, it defaults to the Pusher WebSocket host based on the cluster.


wsPort
int
The ws port of the connection (default: 80).


wssPort
int
The wss port of the connection (default: 443).


encrypted
bool
A flag indicating whether to enable encrypted connection. Default is false.


activityTimeout
int
The activity timeout in milliseconds. This is the duration after which a ping is sent if no activity is detected. Default is 120000 (2 minutes).


pongTimeout
int
The timeout in milliseconds for waiting for a pong response after a ping is sent. Default is 30000 (30 seconds).


parameters
Map<String, String>
Additional parameters to be appended to the WebSocket URL query string.


authOptions
PusherAuthOptions
The options for authentication, such as headers or credentials. This is required for authenticating private and presence channels.


enableLogging
bool
A flag indicating whether to enable logging for the Pusher client. Default is false.


autoConnect
bool
A flag indicating whether to automatically connect to the Pusher server upon initialization. Default is true.


maxReconnectionAttempts
int
The maximum reconnection attempts.


reconnectGap
Duration
The reconnection duration gap.


channelDecryption
Map<String, dynamic> Function(Uint8List sharedSecret, Map<String, dynamic> data)?
A custom handler for decrypting data on encrypted channels. If not provided, the default decryption handler is used.



Pusher Auth Options #



Option
Type
Description




endpoint
String
The endpoint for the authentication.


headers
Map<String, String>
The headers for the authentication (default: {'Accept': 'application/json'}).



Contributing #
Contributions are welcome! Please open an issue or submit a pull request on GitHub.
License #
This project is licensed under the MIT License. See the LICENSE file for details.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.