Entonces, como dice el título, estoy jugando con websockets. Hasta ahora todo bien, excepto por el hecho de que no puedo hacer que la página espere hasta que tengamos una respuesta. Ahora, en realidad tengo una buena razón para hacer esto; los tiempos de solicitud son de aproximadamente 2-10 ms debido a que va a 127.0.0.1, por lo que apenas se nota. Sin embargo, es lo suficientemente largo para que la página progrese lo suficiente como para llegar a una parte donde se necesita la respuesta.
Como puede ver, eso es una especie de problema.
Estoy usando la interfaz de socket JS normal en el cliente y una biblioteca golang websocket en el backend.
¿Algunas ideas?
Simplemente incruste su parte donde se necesita una respuesta dentro
socket.onmessage = function (msg) { // part where msg.data is needed }
¿Está utilizando algunas bibliotecas web como ReactJs/VueuJs?
Si está utilizando alguna biblioteca que puede administrar el DOM del navegador, puede usar una estrategia Spinner. Wen, la primera representación de su página le envía al usuario por primera vez un Spinner y antes de que lleguen sus datos, quita el spinner y muestra su página. Si lo prefiere, puede usar un Esqueleto en lugar de la ruleta.
Si está utilizando reaccionar, puede hacer algo como esto.
import { useState } from 'react' const Page = () => { const [loading, setLoading] = useState(true) cosnt [data, setData] = useState({}) useEffect(() => { socket.on('message', (data) => { setData(data) setLoading(false) }) }, []) return (<> { loading ? <Spinner /> : <Screen data={data} /> } </>) }