Transport Overview
Transports are the means by which PipecatClient
s communicate with their bot services. Transports implement the underlying device management, connectivity, media transmission, and state logic that manage the lifecycle of your session.
All transport packages (such as DailyTransport
) extend from the Transport
base class defined in the client-js
library. You can extend this class if you are looking to implement your own or add additional functionality.
Transport lifecycle
Each Pipecat client instance is associated with a transport instance. The instance will re-use the transport instance across multiple calls to connect()
, allowing you to connect to different bot services without needing to create a new transport or client each time.
Transport states
TransportState
Your transport instance goes through a series of states during its lifecycle. These states are:
Disconnected
Transport is idle and has not yet been initialized (default state).
Initializing
Transport is being initialized. This occurs in response to a pcClient.initDevices()
call, where the transport is being set up in order to enumerate local media devices. If you call connect()
and bypass initDevices()
, the transport will skip this state and go directly to Authenticating
or Connecting
.
Initialized
Transport has been initialized and is ready to connect. This state is reached after a successful pcClient.initDevices()
call and skipped if initDevices()
is not used.
Authenticating
Your client has called pcClient.connect()
with a ConnectionEndpoint
and is waiting for a response from your server containing connection details for your transport (such as a session URL and token). Note: If you provide the TransportConnectionParams
directly, the transport will skip this state and go directly to Connecting
.
Authenticated
Your client has called pcClient.connect()
with a ConnectionEndpoint
and has successfully received a response. It will quickly move into the Connecting
state.
Connecting
The transport is connecting to the server.
Connected
The transport has successfully connected to the session and is awaiting a client-ready signal (indicated audio and video tracks are ready to be sent and received).
Ready
Disconnecting
Transport is disconnecting from the session.
Error
An error occurred during the transport lifecycle. This indicates a fatal error and the transport should move quickly into the Disconnected
state.
You can access the current transport state via pcClient.state
, or by defining a callback or event: