@four-leaf-studios/rl-socket-hook
Version:
A tiny React wrapper around a Rocket League WebSocket plugin (`ws://localhost:49122`). It provides:
25 lines (24 loc) • 1.02 kB
TypeScript
import React, { ReactNode } from "react";
import { PayloadStorage } from "./types";
type Subscriber = () => void;
interface Store {
getSnapshot<E extends keyof PayloadStorage>(eventName: E): PayloadStorage[E] | undefined;
subscribe<E extends keyof PayloadStorage>(eventName: E, callback: Subscriber): () => void;
send(event: string, data: any): void;
readyState: number;
error: Event | null;
}
export declare const RLContext: React.Context<Store | null>;
export declare const RLProvider: React.FC<{
url?: string;
children: ReactNode;
}>;
/**
* Subscribe to the full payload of an event.
*/
export declare function useEvent<E extends keyof PayloadStorage>(eventName: E): PayloadStorage[E] | undefined;
/**
* Subscribe to a selected slice of the event payload. Re-renders only on actual changes.
*/
export declare function useEventSelector<E extends keyof PayloadStorage, U>(eventName: E, selector: (v: PayloadStorage[E] | undefined) => U, isEqual?: (a: U, b: U) => boolean): U;
export {};