send method

  1. @override
Future<void> send(
  1. Map<String, dynamic> message
)
override

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;
  }
}