emitPreProcessor property
Optional pre-processor to modify payload before emitting to server.
Called just before socket.emit() with the complete payload. Perfect for:
- Adding client metadata (app version, device ID, platform)
- Injecting authentication tokens or signatures
- Transforming fields for backend compatibility
- Adding analytics or tracking tags
Applied to all operations: batch changes, individual upserts, and deletes.
Example:
emitPreProcessor: (rawJson) {
rawJson['clientVersion'] = '2.1.0';
rawJson['deviceId'] = DeviceInfo.deviceId;
rawJson['platform'] = Platform.operatingSystem;
rawJson['timestamp'] = DateTime.now().toIso8601String();
// Transform batch operations
if (rawJson['changes'] is List) {
for (var change in rawJson['changes']) {
change['source'] = 'mobile-app';
}
}
return rawJson;
}
Implementation
final Map<String, dynamic> Function(Map<String, dynamic> rawJson)? emitPreProcessor;