Custom WebSocket client
Overview
The TrioNetworkClient class is a WebSocket client operations implements transport agnostic NetworkClient.
1. TrioNetworkClient implements NetworkClient
- Responsibility:
- Raw WebSocket connection management
- Message queueing and asynchronous I/O
- Binary/text data transmission
- Customization Use Cases:
- Add Action specific logic for example perform some logic on keygen connect
- Replace WebSocket library (e.g., Socket.IO, different WebSocket impl)
- Modify low-level message queueing logic
Example
App.tsx
import trioinitiator
class CustomNetworkClient: TrioNetworkClient {
override func connect(websocketAction: TrioNetworkAction, params: String?) async throws {
var customAction: WebsocketAction = websocketAction
// Customize the action based on the specific type
if var keygenAction = websocketAction as? ECDSAKeygen {
// Example: Customize path, action, or protocol
keygenAction.path = "custom-trio"
customAction = keygenAction
} else if var keygenAction = websocketAction as? EdDSAKeygen {
// Example: Customize path, action, or protocol
keygenAction.path = "custom-trio"
customAction = keygenAction
} else if var signAction = websocketAction as? ECDSASignature {
// Example: Customize signature action
signAction.protocol = "custom-trio-instance"
customAction = signAction
} else if var signAction = websocketAction as? EdDSASignature {
// Example: Customize signature action
signAction.protocol = "custom-trio-instance"
customAction = signAction
}
// Add more customizations as needed for other action types
try await super.connect(
websocketAction: customAction as! TrioNetworkAction,
params: params
)
}
}