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
| Parameter | Type | Description | Default |
|---|---|---|---|
requestTimeout | TimeInterval | Request timeout in seconds | 30.0 |
resourceTimeout | TimeInterval | Resource (files, images) loading timeout | 60.0 |
retryCount | Int | Request retry count on failure | 3 |
retryDelay | TimeInterval | Delay between retries | 1.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
allowUntrustedSSLCertificatein 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
)