jitsi-roomsv2/frontend/src/hooks/useWebSocketConnection.ts

35 lines
959 B
TypeScript
Raw Normal View History

import { useCallback, useState } from "react";
import { WEBSOCKET_URL } from "../background/constants";
function useWebSocketConnection() {
const createWebSocketConnection = () => {
const webSocket = new WebSocket(WEBSOCKET_URL);
return webSocket
}
const [webSocketConnection] = useState<WebSocket>(createWebSocketConnection())
const sendMessage = useCallback((message: string) => {
//if the socket's open, send a message:
if (webSocketConnection.readyState === WebSocket.OPEN) {
webSocketConnection.send(message);
}
},
[webSocketConnection]
)
const onMessage = useCallback(
(messageHandler: (messageHandler: string) => void) => {
const wsMessageHandler = (ev: MessageEvent<any>) => { messageHandler(ev.data) }
webSocketConnection.addEventListener('message', wsMessageHandler)
},
[webSocketConnection]
)
return { onMessage, sendMessage }
}
export default useWebSocketConnection;