Skip to main content

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