Skip to content
This repository was archived by the owner on Oct 22, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion docs/concepts/interacting-with-actors.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,6 @@ Other common errors you might encounter:

- `InternalError`: Error from your actor that's not a subclass of `UserError`
- `ManagerError`: Issues when connecting to or communicating with the actor manager
- `NoSupportedTransport`: When the client and server have no compatible transport

## Disconnecting and Cleanup

Expand Down
23 changes: 4 additions & 19 deletions packages/actor-core/src/client/actor_conn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,7 @@ export class ActorConnRaw {
private readonly endpoint: string,
private readonly params: unknown,
private readonly encodingKind: Encoding,
private readonly supportedTransports: Transport[],
private readonly serverTransports: Transport[],
private readonly transport: Transport,
private readonly actorQuery: ActorQuery,
) {
this.#keepNodeAliveInterval = setInterval(() => 60_000);
Expand Down Expand Up @@ -349,13 +348,12 @@ enc
this.#onOpenPromise = Promise.withResolvers();

// Connect transport
const transport = this.#pickTransport();
if (transport === "websocket") {
if (this.transport === "websocket") {
this.#connectWebSocket();
} else if (transport === "sse") {
} else if (this.transport === "sse") {
this.#connectSse();
} else {
assertUnreachable(transport);
assertUnreachable(this.transport);
}

// Wait for result
Expand All @@ -365,19 +363,6 @@ enc
}
}

#pickTransport(): Transport {
// Choose first supported transport from server's list that client also supports
const transport = this.serverTransports.find((t) =>
this.supportedTransports.includes(t),
);

if (!transport) {
throw new errors.NoSupportedTransport();
}

return transport;
}

#connectWebSocket() {
const { WebSocket } = this.#dynamicImports;

Expand Down
28 changes: 6 additions & 22 deletions packages/actor-core/src/client/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export interface ActorAccessor<AD extends AnyActorDefinition> {
*/
export interface ClientOptions {
encoding?: Encoding;
supportedTransports?: Transport[];
transport?: Transport;
}

/**
Expand Down Expand Up @@ -140,7 +140,7 @@ export class ClientRaw {

#managerEndpoint: string;
#encodingKind: Encoding;
#supportedTransports: Transport[];
#transport: Transport;

/**
* Creates an instance of Client.
Expand All @@ -153,10 +153,7 @@ export class ClientRaw {
this.#managerEndpoint = managerEndpoint;

this.#encodingKind = opts?.encoding ?? "cbor";
this.#supportedTransports = opts?.supportedTransports ?? [
"websocket",
"sse",
];
this.#transport = opts?.transport ?? "websocket";
}

/**
Expand Down Expand Up @@ -185,12 +182,7 @@ export class ClientRaw {
};

const managerEndpoint = this.#managerEndpoint;
const conn = this.#createConn(
managerEndpoint,
opts?.params,
["websocket", "sse"],
actorQuery,
);
const conn = this.#createConn(managerEndpoint, opts?.params, actorQuery);
return this.#createProxy(conn) as ActorConn<AD>;
}

Expand Down Expand Up @@ -261,7 +253,6 @@ export class ClientRaw {
const conn = this.#createConn(
managerEndpoint,
opts?.params,
["websocket", "sse"],
actorQuery,
);
return this.#createProxy(conn) as ActorConn<AD>;
Expand Down Expand Up @@ -324,28 +315,21 @@ export class ClientRaw {
};

const managerEndpoint = this.#managerEndpoint;
const conn = this.#createConn(
managerEndpoint,
opts?.params,
["websocket", "sse"],
actorQuery,
);
const conn = this.#createConn(managerEndpoint, opts?.params, actorQuery);
return this.#createProxy(conn) as ActorConn<AD>;
}

#createConn(
endpoint: string,
params: unknown,
serverTransports: Transport[],
actorQuery: ActorQuery,
): ActorConnRaw {
const conn = new ActorConnRaw(
this,
endpoint,
params,
this.#encodingKind,
this.#supportedTransports,
serverTransports,
this.#transport,
actorQuery,
);
this[ACTOR_CONNS_SYMBOL].add(conn);
Expand Down
6 changes: 0 additions & 6 deletions packages/actor-core/src/client/errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,6 @@ export class MalformedResponseMessage extends ActorClientError {
}
}

export class NoSupportedTransport extends ActorClientError {
constructor() {
super("No supported transport available between client and server");
}
}

export class ActionError extends ActorClientError {
constructor(
public readonly code: string,
Expand Down
1 change: 0 additions & 1 deletion packages/actor-core/src/client/mod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ export {
ManagerError,
ConnParamsTooLong,
MalformedResponseMessage,
NoSupportedTransport,
ActionError,
ConnectionError,
} from "@/client/errors";
Expand Down
Loading