mirror of
https://github.com/PrimalHQ/primal-web-app.git
synced 2024-10-01 17:31:13 +00:00
Web socket connection and message hooks
This commit is contained in:
parent
f5eb6047d5
commit
9f8b2f4b35
@ -70,8 +70,10 @@ const Router: Component = () => {
|
|||||||
thread,
|
thread,
|
||||||
};
|
};
|
||||||
|
|
||||||
primalWindow.onPrimalComponentMount = (data: ComponentLog) => {};
|
primalWindow.onPrimalComponentMount = () => {};
|
||||||
primalWindow.onPrimalComponentCleanup = (data: ComponentLog) => {};
|
primalWindow.onPrimalComponentCleanup = () => {};
|
||||||
|
primalWindow.onPrimalCacheServerConnected = () => {};
|
||||||
|
primalWindow.onPrimalCacheServerMessage = () => {};
|
||||||
}
|
}
|
||||||
|
|
||||||
const getKnownProfiles = ({ params }: RouteDataFuncArgs) => {
|
const getKnownProfiles = ({ params }: RouteDataFuncArgs) => {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { createSignal } from "solid-js";
|
import { createSignal } from "solid-js";
|
||||||
import { NostrEvent, NostrEOSE, NostrEventType, NostrEventContent } from "./types/primal";
|
import { NostrEvent, NostrEOSE, NostrEventType, NostrEventContent, PrimalWindow } from "./types/primal";
|
||||||
|
|
||||||
export const [socket, setSocket] = createSignal<WebSocket>();
|
export const [socket, setSocket] = createSignal<WebSocket>();
|
||||||
|
|
||||||
@ -9,6 +9,11 @@ export const isNotConnected = () => !isConnected();
|
|||||||
|
|
||||||
const onOpen = () => {
|
const onOpen = () => {
|
||||||
setConnected(true);
|
setConnected(true);
|
||||||
|
if (localStorage.getItem('devMode') === 'true') {
|
||||||
|
const hook = (window as PrimalWindow).onPrimalCacheServerConnected;
|
||||||
|
|
||||||
|
hook && hook(cacheServer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const onClose = () => {
|
const onClose = () => {
|
||||||
@ -17,12 +22,21 @@ const onClose = () => {
|
|||||||
socket()?.removeEventListener('open', onOpen);
|
socket()?.removeEventListener('open', onOpen);
|
||||||
socket()?.removeEventListener('close', onClose);
|
socket()?.removeEventListener('close', onClose);
|
||||||
socket()?.removeEventListener('error', onError);
|
socket()?.removeEventListener('error', onError);
|
||||||
|
socket()?.removeEventListener('message', onMessage);
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
connect();
|
connect();
|
||||||
}, 200);
|
}, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const onMessage = (event: MessageEvent) => {
|
||||||
|
if (localStorage.getItem('devMode') === 'true') {
|
||||||
|
const hook = (window as PrimalWindow).onPrimalCacheServerMessage;
|
||||||
|
|
||||||
|
hook && hook(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const onError = (error: Event) => {
|
const onError = (error: Event) => {
|
||||||
console.log("ws error: ", error);
|
console.log("ws error: ", error);
|
||||||
};
|
};
|
||||||
@ -41,6 +55,7 @@ export const connect = () => {
|
|||||||
socket()?.addEventListener('open', onOpen);
|
socket()?.addEventListener('open', onOpen);
|
||||||
socket()?.addEventListener('close', onClose);
|
socket()?.addEventListener('close', onClose);
|
||||||
socket()?.addEventListener('error', onError);
|
socket()?.addEventListener('error', onError);
|
||||||
|
socket()?.addEventListener('message', onMessage);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
2
src/types/primal.d.ts
vendored
2
src/types/primal.d.ts
vendored
@ -342,6 +342,8 @@ export type PrimalWindow = Window & typeof globalThis & {
|
|||||||
primal?: any,
|
primal?: any,
|
||||||
onPrimalComponentMount?: (data: any) => void,
|
onPrimalComponentMount?: (data: any) => void,
|
||||||
onPrimalComponentCleanup?: (data: any) => void,
|
onPrimalComponentCleanup?: (data: any) => void,
|
||||||
|
onPrimalCacheServerConnected?: (url: string) => void,
|
||||||
|
onPrimalCacheServerMessage?: (message: MessageEvent) => void,
|
||||||
};
|
};
|
||||||
|
|
||||||
export type NostrEventType = "EVENT" | "EOSE" | "NOTICE";
|
export type NostrEventType = "EVENT" | "EOSE" | "NOTICE";
|
||||||
|
Loading…
Reference in New Issue
Block a user