send method
Send a message to the server
Implementation
@override
Future<void> send(Map<String, dynamic> message) async {
_logger.info('HTTP: Sending message: $message');
_logger.info('HTTP: Connected state: $connected');
// HTTP transport can send messages as long as it has URL and headers
// The connected state is more relevant for WebSocket transport
if (_url == null) {
_logger.severe('HTTP: Cannot send message - no URL configured');
throw FayeError.network('No URL configured');
}
try {
_logger.info('HTTP: Sending request...');
final response = await _sendRequest(message);
// Handle response for immediate requests (handshake, subscribe, unsubscribe, publish)
if (response is List) {
for (final responseMessage in response) {
emitMessage(responseMessage);
}
} else if (response is Map<String, dynamic>) {
emitMessage(response);
}
recordMessageSent(message);
_logger.info('HTTP: Message sent successfully');
} catch (e) {
_logger.severe('HTTP: Failed to send message: $e');
emitError(FayeError.network('Failed to send message: $e'));
rethrow;
}
}