javascript - 删除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}`)
})
这就是它如何显示消息的简单概述。我该怎么做才能检查消息计数并删除它们以便屏幕上只有一定数量?
解决方案
好吧,您依赖于'message-container'
不太合适的 HTML 元素,相反,您可以使用数组存储在当前会话中,您的函数appendMessage()
可以进行推送,然后您可以根据需要管理 JSON 数组中的消息
推荐阅读
- python - 如何使用python比较图像并合并为一张图像
- python - 实体框架:仅当所有对象都存在时才更新多个对象
- javascript - 在单击按钮的情况下执行方法
- python-3.x - Python 映射列表乱序返回字典
- javascript - 用打字稿和角度对父母和孩子进行排序
- android - 根据屏幕密度分离 Jetpack 可组合功能
- vue.js - 覆盖 Vuetify 变量
- node.js - 为什么 api 调用需要很长时间才能响应?通过邮递员调用相同的 api url 立即给出结果
- google-apps-script - Google Apps 脚本从 Stripe 接收 webhook,未能提取部分接收到的事件信息
- rust - 使用类似“复制”的语义在可变引用上创建包装器