Report errors when start() is called multiple times
This commit is contained in:
parent
83a43fda1e
commit
7b718de77c
5 changed files with 29 additions and 1 deletions
|
|
@ -22,6 +22,12 @@ export class SSEClientTransport implements Transport {
|
|||
}
|
||||
|
||||
start(): Promise<void> {
|
||||
if (this._eventSource) {
|
||||
throw new Error(
|
||||
"SSEClientTransport already started! If using Client class, note that connect() calls start() automatically.",
|
||||
);
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
this._eventSource = new EventSource(this._url.href);
|
||||
this._abortController = new AbortController();
|
||||
|
|
|
|||
|
|
@ -45,6 +45,12 @@ export class StdioClientTransport implements Transport {
|
|||
* Starts the server process and prepares to communicate with it.
|
||||
*/
|
||||
async start(): Promise<void> {
|
||||
if (this._process) {
|
||||
throw new Error(
|
||||
"StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.",
|
||||
);
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
this._process = spawn(
|
||||
this._serverParams.command,
|
||||
|
|
|
|||
|
|
@ -19,6 +19,12 @@ export class WebSocketClientTransport implements Transport {
|
|||
}
|
||||
|
||||
start(): Promise<void> {
|
||||
if (this._socket) {
|
||||
throw new Error(
|
||||
"WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.",
|
||||
);
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
this._socket = new WebSocket(this._url, SUBPROTOCOL);
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,9 @@ export class SSEServerTransport implements Transport {
|
|||
*/
|
||||
async start(): Promise<void> {
|
||||
if (this._sseResponse) {
|
||||
throw new Error("Already connected!");
|
||||
throw new Error(
|
||||
"SSEServerTransport already started! If using Server class, note that connect() calls start() automatically.",
|
||||
);
|
||||
}
|
||||
|
||||
this.res.writeHead(200, {
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import { Transport } from "../shared/transport.js";
|
|||
*/
|
||||
export class StdioServerTransport implements Transport {
|
||||
private _readBuffer: ReadBuffer = new ReadBuffer();
|
||||
private _started = false;
|
||||
|
||||
constructor(
|
||||
private _stdin: Readable = process.stdin,
|
||||
|
|
@ -34,6 +35,13 @@ export class StdioServerTransport implements Transport {
|
|||
* Starts listening for messages on stdin.
|
||||
*/
|
||||
async start(): Promise<void> {
|
||||
if (this._started) {
|
||||
throw new Error(
|
||||
"StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.",
|
||||
);
|
||||
}
|
||||
|
||||
this._started = true;
|
||||
this._stdin.on("data", this._ondata);
|
||||
this._stdin.on("error", this._onerror);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue