Tengo un sistema de chat pero quiero que tanto las notificaciones como los mensajes se actualicen inmediatamente, estoy usando este código (setInterval) pero hace solicitudes cada 500 segundos por lo que creo que no es muy eficiente, hay otra forma de hacerlo ?
setInterval(() => { let xhr = new XMLHttpRequest(); xhr.open("POST", "INCLUDES/funciones/get-chat.php", true); xhr.onload = () => { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { let data = xhr.response; chatBox.innerHTML = data; if (!chatBox.classList.contains("active")) { } } } } let formData = new FormData(form); xhr.send(formData); }, 500);Debería comprobarWebSockets . Puede reducir el tiempo entre solicitudes reduciendo el segundo parámetro de setInterval pero eso sería malo. Sería un gran estrés para su servidor ver un aumento en la cantidad de solicitudes.
WebSocket, como su nombre lo dice, abre un socket, un canal de comunicación permanente entre el servidor y el cliente. Esto permite que el servidor envíe mensajes al cliente.
La ventaja es que si no hay ningún mensaje listo para el cliente, no se envía tráfico y no se realizan nuevas solicitudes del cliente al servidor.
Este no es el lugar adecuado para un ejemplo de código de chat completo porque es bastante largo. Puede ver que Socket.io no es la biblioteca más rápida, pero quizás la más fácil para trabajar con WebScokets. Aquí puede encontrar un ejemplo de un chat de trabajo (servidor y cliente) usando Socket.IO