Socket Connection
In order to connect the user and the doctor
there should be a channel that reflects the status update of the consultation,
So we have the Pusher.
Pusher
For initiating the socket, you need the pusherChannel and pusherAppKey from the consultation data.
import 'package:altibbi/pusher.dart';
Pusher().init(
onEvent: onEvent,
channelName: consultation.pusherChannel!,
apiKey: consultation.pusherApiKey! // mapped from pusherAppKey in JSON
);
Listen to Events
Register an onEvent function to handle updates:
void onEvent(event) async {
print("Event Name: ${event.eventName}");
// Example: handle status updates
if (event.eventName == 'call-status') {
// Refresh consultation data
}
}
Configuration Models
When the consultation status moves to in_progress, the following config objects will be populated:
ChatConfig
class ChatConfig {
int? id;
int? consultationId;
String? groupId;
String? chatUserId;
String? appId;
String? chatUserToken;
}
VoipConfig (used for both VOIP and Video)
class VoipConfig {
int? id;
int? consultationId;
String? apiKey;
String? callId;
String? token;
}