Merge pull request #477 from nichtsam/pr/protocol-overwriting-transport-hooks
Pr/protocol overwriting transport hooks
This commit is contained in:
commit
71d309d0d8
2 changed files with 25 additions and 1 deletions
|
|
@ -65,6 +65,22 @@ describe("protocol tests", () => {
|
|||
expect(oncloseMock).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("should not overwrite existing hooks when connecting transports", async () => {
|
||||
const oncloseMock = jest.fn();
|
||||
const onerrorMock = jest.fn();
|
||||
const onmessageMock = jest.fn();
|
||||
transport.onclose = oncloseMock;
|
||||
transport.onerror = onerrorMock;
|
||||
transport.onmessage = onmessageMock;
|
||||
await protocol.connect(transport);
|
||||
transport.onclose();
|
||||
transport.onerror(new Error());
|
||||
transport.onmessage("");
|
||||
expect(oncloseMock).toHaveBeenCalled();
|
||||
expect(onerrorMock).toHaveBeenCalled();
|
||||
expect(onmessageMock).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
describe("_meta preservation with onprogress", () => {
|
||||
test("should preserve existing _meta when adding progressToken", async () => {
|
||||
await protocol.connect(transport);
|
||||
|
|
|
|||
|
|
@ -286,15 +286,21 @@ export abstract class Protocol<
|
|||
*/
|
||||
async connect(transport: Transport): Promise<void> {
|
||||
this._transport = transport;
|
||||
const _onclose = this.transport?.onclose;
|
||||
this._transport.onclose = () => {
|
||||
_onclose?.();
|
||||
this._onclose();
|
||||
};
|
||||
|
||||
const _onerror = this.transport?.onerror;
|
||||
this._transport.onerror = (error: Error) => {
|
||||
_onerror?.(error);
|
||||
this._onerror(error);
|
||||
};
|
||||
|
||||
const _onmessage = this._transport?.onmessage;
|
||||
this._transport.onmessage = (message, extra) => {
|
||||
_onmessage?.(message, extra);
|
||||
if (isJSONRPCResponse(message) || isJSONRPCError(message)) {
|
||||
this._onresponse(message);
|
||||
} else if (isJSONRPCRequest(message)) {
|
||||
|
|
@ -302,7 +308,9 @@ export abstract class Protocol<
|
|||
} else if (isJSONRPCNotification(message)) {
|
||||
this._onnotification(message);
|
||||
} else {
|
||||
this._onerror(new Error(`Unknown message type: ${JSON.stringify(message)}`));
|
||||
this._onerror(
|
||||
new Error(`Unknown message type: ${JSON.stringify(message)}`),
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue