节点和套接字聊天应用程序 - 仅显示25条最近的消息

时间:2018-06-09 19:56:37

标签: javascript jquery node.js socket.io

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

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 );
});

由于我只是附加消息,因此它没有删除消息而无需重新加载的功能,并且当聊天消息发布时它也将继续发布到您的屏幕,这将导致MASSIVE滚动窗口和使用在页面上。

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

我是Socket和Node的新手,到目前为止我都喜欢它。我之前的聊天引擎使用了纯JS,并且对内容进行了4秒的检查,如果有更改则会重新加载整个div。这留下了消息的延迟,真的很笨拙,所以我喜欢Node支持的速度。提前谢谢!

1 个答案:

答案 0 :(得分:1)

插回元素时使用getSharedPreference("name of your preferences", Context.MODE_PRIVATE).edit().putString("key", "value").apply(); //use .commit() or apply() at the end.

slice