首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Node和Socket聊天应用-仅显示25条最新消息

Node和Socket聊天应用-仅显示25条最新消息
EN

Stack Overflow用户
提问于 2018-06-10 03:56:37
回答 1查看 307关注 0票数 0

我有一个我正在制作的聊天应用程序,现在,当你打开应用程序时,页面会运行SQL查询,并使用isactive = 1检查提取最后25条消息。当用户发布消息时,我使用Socket.io和Node.js将消息回显给其他用户,并将其附加到聊天屏幕。它还会同时提交到数据库,这样新用户就会看到这条消息。这是我现在用来追加消息的代码(将在稍后添加样式)

代码语言:javascript
复制
socket.on( 'message', function( data ) {
    console.log("saw a request to the socket");
    var actualContent = $( "#messages" ).html();
    var newMsgContent = '<li> NAME: ' + data.name + ' = ID: ' + data.id + ' = AVATAR: ' + data.avatar + ' = MESSAGE: ' + data.message + '</li>';
    var content = newMsgContent + actualContent;
    $( "#messages" ).html( content );
});

由于我只是在添加消息,它没有在不重新加载的情况下删除消息的功能,而且随着聊天消息的发布,它也将永远发布到您的屏幕上,这将导致页面上的大量滚动窗口和使用率。

有没有办法限制它只显示最近的25条消息?或者,我是否应该不让系统附加消息,而只是使用数据库中的最新数据重新加载内容div?我看到的缺点是,它将创建更多的数据库调用,并阻塞SQL服务器。有什么更好的方式来沟通这些事件?

我是Socket和Node的新手,到目前为止我很喜欢它。我之前的聊天引擎使用纯JS,每隔4秒检查一次内容,如果有变化,它会重新加载整个div。这在消息中留下了延迟,真的很笨拙,所以我喜欢Node支持的速度。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-10 04:11:09

在插入回元素时使用slice

代码语言:javascript
复制
socket.on( 'message', function( data ) {
    console.log("saw a request to the socket");
    var actualContent = $( "#messages" ).html();
    var newMsgContent = '<li> NAME: ' + data.name + ' = ID: ' + data.id + ' = AVATAR: ' + data.avatar + ' = MESSAGE: ' + data.message + '</li>';
    var content = newMsgContent + actualContent;
    content = $(content).slice(0, 25).map(function(i, x) { return x.outerHTML }).toArray().join(''); // Will return first 25 messages
    $( "#messages" ).html( content );
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50778010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档