@stomp/stompjs
Version:
STOMP client for Javascript and Typescript
40 lines (32 loc) • 976 B
text/typescript
import { IStompSocket } from './types.js';
/**
* @internal
*/
export function augmentWebsocket(
webSocket: IStompSocket,
debug: (msg: string) => void
) {
webSocket.terminate = function () {
const noOp = () => {};
// set all callbacks to no op
this.onerror = noOp;
this.onmessage = noOp;
this.onopen = noOp;
const ts = new Date();
const id = Math.random().toString().substring(2, 8); // A simulated id
const origOnClose = this.onclose;
// Track delay in actual closure of the socket
this.onclose = closeEvent => {
const delay = new Date().getTime() - ts.getTime();
debug(
`Discarded socket (#${id}) closed after ${delay}ms, with code/reason: ${closeEvent.code}/${closeEvent.reason}`
);
};
this.close();
origOnClose?.call(webSocket, {
code: 4001,
reason: `Quick discarding socket (#${id}) without waiting for the shutdown sequence.`,
wasClean: false,
});
};
}