mirror of
https://github.com/stefanpejcic/openpanel
synced 2025-06-26 18:28:26 +00:00
23 lines
608 B
TypeScript
23 lines
608 B
TypeScript
// receive ws message by adding a listener to the ws object
|
|
|
|
import { DevtoolsEvent, DevtoolsEventPayloads } from "./event-types";
|
|
|
|
export function receive<T extends DevtoolsEvent>(
|
|
ws: WebSocket,
|
|
event: T,
|
|
callback: (payload: DevtoolsEventPayloads[T]) => void,
|
|
) {
|
|
const listener = (e: MessageEvent) => {
|
|
const { event: receivedEvent, payload } = JSON.parse(e.data);
|
|
if (event === receivedEvent) {
|
|
callback(payload);
|
|
}
|
|
};
|
|
|
|
ws.addEventListener("message", listener);
|
|
|
|
return () => {
|
|
ws.removeEventListener("message", listener);
|
|
};
|
|
}
|