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>