Tengo un cliente de reactjs que se conecta a un servidor websocket, sin embargo, cuando trato de inicializarlo fuera de un gancho de efecto, el objeto websocket no está definido, pero se inicializa cuando está en un gancho de efecto.
al igual que:
effect(()=>{ connection = new WebSocket(url) //do some stuff })el problema es que quiero enviar cosas en base a un evento que ocurre en la aplicación reactjs
effect(()=>{ connection.send(messages) },[messages])en ese momento, la conexión no está definida, a pesar de que la conexión se realizó en ese momento, solo puedo suponer que, dado que tengo que usar Native WS para navegadores, tengo que inicializar el websocket en otro lugar, pero no sé dónde
Mantener la variable de estado para la conexión. Cree solo una vez y tenga una conexión cercana en efecto. (Array de dependencia vacío para ejecutar una vez)
const [connection, setConnection] = useState(null); useEffect(() => { connection = new WebSocket(url); setConnection(connection); return () => connection.close() }, []) useEffect(() => { connection.send(messages) }, [messages])