Estoy creando esta pequeña caja de chat con socket.io, y me pregunto cómo puedo agregar un retraso entre el envío de mensajes para evitar el spam y demás.
Aquí está mi código para enviar un mensaje.
// Sends a chat message const sendMessage = () => { let message = $inputMessage.val(); // Prevent markup from being injected into the message message = cleanInput(message); // if there is a non-empty message and a socket connection if (message && connected) { $inputMessage.val(""); addChatMessage({ username, message }); // tell server to execute 'new message' and send along one parameter socket.emit("new message", message); } };Puede agregar una variable que rastree la hora del mensaje enviado más recientemente y una comparación de esta variable y la hora actual; si la diferencia es demasiado pequeña, niéguese a enviarla.
Ejemplo mínimo:
window.lastMessageTime = 0; function sendMessage(message) { if(Date.now() - window.lastMessageTime < 5000) return false; window.lastMessageTime = Date.now(); // Proceed };Intente usar setTimeout para ejecutar su función principal. Javascript no admite ningún retraso, ya que es de un solo subproceso.