Documentation / @agentick/client-multiplexer / SharedTransport
Class: SharedTransport
Defined in: client-multiplexer/src/shared-transport.ts:60
@agentick/client-multiplexer
Multi-tab connection multiplexer for Agentick client.
Reduces server connections by electing a leader tab that maintains the SSE connection while other tabs communicate via BroadcastChannel.
Features:
- Leader election using Web Locks API (instant, reliable)
- BroadcastChannel fallback for older browsers
- Automatic failover when leader tab closes
- Per-tab subscription filtering (each tab only receives its events)
- Subscription aggregation (leader subscribes to union of all tabs' sessions)
Example
import { createClient } from '@agentick/client';
import { createSharedTransport } from '@agentick/client-multiplexer';
// Create client with shared transport
const client = createClient({
baseUrl: '/api',
transport: createSharedTransport({ baseUrl: '/api', token: 'your-token' }),
});
// Use exactly like a regular client
const session = client.session('main');
session.subscribe(); // Subscribe to events
session.onEvent((event) => console.log(event));
// Send a message
const handle = session.send('Hello!');
await handle.result;
// Check leadership status (optional, for debugging/UI)
const transport = client.getTransport() as SharedTransport | undefined;
console.log('Is leader:', transport?.isLeader);Implements
Constructors
Constructor
new SharedTransport(
config):SharedTransport
Defined in: client-multiplexer/src/shared-transport.ts:101
Parameters
config
Returns
SharedTransport
Accessors
connectionId
Get Signature
get connectionId():
string|undefined
Defined in: client-multiplexer/src/shared-transport.ts:120
Connection ID (if assigned by server)
Returns
string | undefined
Connection ID (if assigned by server)
Implementation of
isLeader
Get Signature
get isLeader():
boolean
Defined in: client-multiplexer/src/shared-transport.ts:422
Returns
boolean
state
Get Signature
get state():
TransportState
Defined in: client-multiplexer/src/shared-transport.ts:116
Current connection state
Returns
Current connection state
Implementation of
tabId
Get Signature
get tabId():
string
Defined in: client-multiplexer/src/shared-transport.ts:426
Returns
string
Methods
abortSession()
abortSession(
sessionId,reason?):Promise<void>
Defined in: client-multiplexer/src/shared-transport.ts:328
Abort a session's execution
Parameters
sessionId
string
reason?
string
Returns
Promise<void>
Implementation of
closeSession()
closeSession(
sessionId):Promise<void>
Defined in: client-multiplexer/src/shared-transport.ts:341
Close a session
Parameters
sessionId
string
Returns
Promise<void>
Implementation of
connect()
connect():
Promise<void>
Defined in: client-multiplexer/src/shared-transport.ts:124
Connect to the server
Returns
Promise<void>
Implementation of
disconnect()
disconnect():
void
Defined in: client-multiplexer/src/shared-transport.ts:196
Disconnect from the server
Returns
void
Implementation of
onEvent()
onEvent(
handler): () =>void
Defined in: client-multiplexer/src/shared-transport.ts:408
Register event handler for incoming events
Parameters
handler
(event) => void
Returns
():
void
Returns
void
Implementation of
onLeadershipChange()
onLeadershipChange(
callback): () =>void
Defined in: client-multiplexer/src/shared-transport.ts:430
Parameters
callback
(isLeader) => void
Returns
():
void
Returns
void
onStateChange()
onStateChange(
handler): () =>void
Defined in: client-multiplexer/src/shared-transport.ts:413
Register state change handler
Parameters
handler
(state) => void
Returns
():
void
Returns
void
Implementation of
publishToChannel()
publishToChannel(
sessionId,channel,event):Promise<void>
Defined in: client-multiplexer/src/shared-transport.ts:395
Publish to a channel
Parameters
sessionId
string
channel
string
event
Returns
Promise<void>
Implementation of
ClientTransport.publishToChannel
send()
send(
input,sessionId?):AsyncIterable<TransportEventData,any,any> &object
Defined in: client-multiplexer/src/shared-transport.ts:209
Send a message and return a stream of events. Returns an async iterator of events for this execution.
Parameters
input
sessionId?
string
Returns
AsyncIterable<TransportEventData, any, any> & object
Implementation of
submitToolResult()
submitToolResult(
sessionId,toolUseId,result):Promise<void>
Defined in: client-multiplexer/src/shared-transport.ts:362
Submit tool result
Parameters
sessionId
string
toolUseId
string
result
Returns
Promise<void>
Implementation of
ClientTransport.submitToolResult
subscribeToChannel()
subscribeToChannel(
sessionId,channel):Promise<void>
Defined in: client-multiplexer/src/shared-transport.ts:379
Subscribe to a channel
Parameters
sessionId
string
channel
string
Returns
Promise<void>
Implementation of
ClientTransport.subscribeToChannel
subscribeToSession()
subscribeToSession(
sessionId):Promise<void>
Defined in: client-multiplexer/src/shared-transport.ts:296
Subscribe to session events
Parameters
sessionId
string
Returns
Promise<void>
Implementation of
ClientTransport.subscribeToSession
unsubscribeFromSession()
unsubscribeFromSession(
sessionId):Promise<void>
Defined in: client-multiplexer/src/shared-transport.ts:311
Unsubscribe from session events
Parameters
sessionId
string
Returns
Promise<void>