diff --git a/src/containers/Inspector.tsx b/src/containers/Inspector.tsx index b9cdda3..6bb3873 100644 --- a/src/containers/Inspector.tsx +++ b/src/containers/Inspector.tsx @@ -207,7 +207,7 @@ const Inspector: React.FC = (props) => { useEffect(() => { if (selectedTransport !== undefined) { - setTransport(selectedTransport!); + setTransport(selectedTransport); const s: IWebTransport = selectedTransport as IWebTransport; if (s.schema !== undefined && s.schema !== true && s.schema !== false) { setTransportOptions((s.schema.examples as ExampleObject[])[0]); diff --git a/src/hooks/useTransport.ts b/src/hooks/useTransport.ts index 01cd964..f3953dd 100644 --- a/src/hooks/useTransport.ts +++ b/src/hooks/useTransport.ts @@ -28,7 +28,7 @@ const getTransportFromType = async ( ): Promise => { let localTransport: any; const localTransportType = transports.find((value) => { - return value.type === transport.type; + return value.type === transport.type && value.name === transport.name; }); if (localTransportType?.type === "websocket") { localTransport = new WebSocketTransport(uri); @@ -74,7 +74,7 @@ const getTransportFromType = async ( } public close() { intermediateTransport.unsubscribe(); - return intermediateTransport.sendData({ + intermediateTransport.sendData({ internalID: 0, request: { jsonrpc: "2.0", @@ -83,6 +83,7 @@ const getTransportFromType = async ( id: 0, }, }); + intermediateTransport.close(); } } localTransport = new InterTransport(); @@ -119,6 +120,10 @@ const useTransport: TUseTransport = (transports, url, defaultTransportType, tran return localTransport.connect().then(() => { setTransportConnected(true); setTransport(localTransport); + }).catch((e) => { + localTransport.unsubscribe() + localTransport.close(); + throw e; }); };