首页 > 解决方案 > 删除socket.io中的消息?

问题描述

我正在开发一个 socket.io 聊天应用程序,它将消息附加到一个 div (#message-container) 以便它显示在页面上。随着消息的继续发送,它会不断堆积更多消息,直到页面最终溢出。如果我想让它显示最近的 10 条消息而不是整个对话历史记录,那么在 10 条消息之后它会开始删除最上面的消息以为最近的消息腾出空间怎么办?

我在 HTML 中有一个 id 为 message-container 的 div,

const messageContainer = document.getElementById('message-container') 

在 server.js 中:

  socket.on('send-chat-message', message => {
    socket.broadcast.emit('chat-message', { message: message, name: users[socket.id] })
    
  })

在 script.js 中:

socket.on('chat-message', data => {
  appendMessage(`${data.name}: ${data.message}`)
})

这就是它如何显示消息的简单概述。我该怎么做才能检查消息计数并删除它们以便屏幕上只有一定数量?

标签: javascripthtmlwebsocketsocket.io

解决方案


好吧,您依赖于'message-container'不太合适的 HTML 元素,相反,您可以使用数组存储在当前会话中,您的函数appendMessage()可以进行推送,然后您可以根据需要管理 JSON 数组中的消息


推荐阅读