35 lines
959 B
TypeScript
35 lines
959 B
TypeScript
|
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;
|
||
|
|