Skip to main content
Version: Next

Network Settings

ChatNetworkConfig - model for configuring network connection parameters.

Configuration

Network settings are passed when creating ChatConfig:

var chatNetworkConfig = ChatNetworkConfig()
chatNetworkConfig.requestTimeout = 30.0
chatNetworkConfig.sslPinning.allowUntrustedSSLCertificate = false

let chatConfig = ChatConfig(
transportConfig: chatTransportConfig,
networkConfig: chatNetworkConfig
)

Parameters

ParameterTypeDescriptionDefault
requestTimeoutTimeIntervalRequest timeout in seconds30.0
resourceTimeoutTimeIntervalResource (files, images) loading timeout60.0
retryCountIntRequest retry count on failure3
retryDelayTimeIntervalDelay between retries1.0

SSL Pinning

For enhanced security, SSL certificate validation can be configured:

var chatNetworkConfig = ChatNetworkConfig()

// Allow self-signed certificates (for testing only!)
chatNetworkConfig.sslPinning.allowUntrustedSSLCertificate = true

// Enable strict certificate validation (recommended for production)
chatNetworkConfig.sslPinning.allowUntrustedSSLCertificate = false
warning

Security Recommendations:

  • Never enable allowUntrustedSSLCertificate in production builds
  • Use this setting only for development/testing with local servers
  • For production, always use valid SSL certificates

Usage Example

// Production configuration
var prodNetworkConfig = ChatNetworkConfig()
prodNetworkConfig.requestTimeout = 30.0
prodNetworkConfig.retryCount = 3
prodNetworkConfig.sslPinning.allowUntrustedSSLCertificate = false

// Test configuration
var testNetworkConfig = ChatNetworkConfig()
testNetworkConfig.requestTimeout = 60.0 // Longer timeout for debugging
testNetworkConfig.sslPinning.allowUntrustedSSLCertificate = true // Allow test certificates

let chatConfig = ChatConfig(
transportConfig: chatTransportConfig,
networkConfig: isProduction ? prodNetworkConfig : testNetworkConfig
)