websocket method
Implementation
Stream<dynamic> websocket({
required String baseDataUrl,
required String mentor,
required String sessionId,
required String token,
required String username,
String tenant = 'main',
String? prompt, // Optional prompt
}) {
var channel = WebSocketChannel.connect(
Uri.parse('wss://$baseDataUrl/ws/langflow/'),
);
// Initial data without the prompt
final dataWithoutPrompt = {
"flow": {"name": mentor, "tenant": tenant, "username": username},
"session_id": sessionId,
"token": token
};
// Send initial data without prompt
channel.sink.add(json.encode(dataWithoutPrompt));
if (prompt != null) {
final dataWithPrompt = {...dataWithoutPrompt, "prompt": prompt};
channel.sink.add(json.encode(dataWithPrompt));
} else {
channel.sink.close();
}
// Return a stream that handles incoming messages
return channel.stream.map((message) {
var partialResponse = jsonDecode(message);
if ((partialResponse.containsKey('error')) ||
(partialResponse.containsKey('eos') &&
partialResponse['eos'] == true)) {
channel.sink.close();
}
return partialResponse;
}).handleError((error) {
print('Error connecting to server: $error');
channel.sink.close();
});
}