mirror of
https://github.com/stefanpejcic/openpanel
synced 2025-06-26 18:28:26 +00:00
packages
This commit is contained in:
22
packages/devtools-shared/src/receive.ts
Normal file
22
packages/devtools-shared/src/receive.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
// receive ws message by adding a listener to the ws object
|
||||
|
||||
import type { 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);
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user