import { useCallback, useState } from "react"; import { WEBSOCKET_URL } from "../background/constants"; import { UserInfo } from "../components/jitsi/types"; const createWebSocketConnection = (userInfo: UserInfo) => { const webSocket = new WebSocket(WEBSOCKET_URL); console.log("[Rooms] createWebSocketConnection"); webSocket.addEventListener("open", (_: Event) => webSocket.send(JSON.stringify(userInfo.displayName)) ); return webSocket; }; function useWebSocketConnection(userInfo: UserInfo) { console.log("[Rooms] useWebSocketConnection"); const [webSocketConnection] = useState(() => createWebSocketConnection(userInfo) ); const sendMessage = useCallback( (message: string) => { //if the socket's open, send a message: if (webSocketConnection.readyState === WebSocket.OPEN) { console.log("[Rooms] sending to ws", message); webSocketConnection.send(message); } }, [webSocketConnection] ); const onMessage = useCallback( (messageHandler: (messageHandler: string) => void) => { const wsMessageHandler = (ev: MessageEvent) => { messageHandler(ev.data); }; webSocketConnection.addEventListener("message", wsMessageHandler); }, [webSocketConnection] ); return { onMessage, sendMessage }; } export default useWebSocketConnection;