Socket IO、JS - 处理检索以前的消息

问题描述 投票:0回答:1

我正在使用 Socket IOReact 构建聊天应用程序。目前,每当用户选择一个对话时,该聊天的所有先前消息都会被获取并显示。此解决方案的问题在于,用户每次选择聊天时都必须等待才能加载之前的消息。

一种解决方案是最初为所有聊天加载 x 数量的先前消息,因此用户只需等待一次。但是,如果稍后将消息添加到聊天中,则用户在选择聊天时将看不到它们,因为最初不会获取这些消息。

解决此问题的方法可能是最初为所有聊天加载 x 数量的先前消息,但是在服务器上,每次将新消息添加到数据库中的用户聊天之一时都会发出套接字事件,然后在客户端上,检索此新消息并将其添加到前端相关聊天的先前消息状态。这样,在选择聊天后,最新的先前消息就尽可能是最新的。这个解决方案有什么问题吗?

如果是这样,是否有更好的替代解决方案来检索以前的聊天消息以及在通过 socket io 发送新消息时处理将新消息添加到聊天中?

一个潜在的问题是,每次将新消息添加到会话中时都会发出套接字事件,这可能会对性能产生负面影响。

javascript socket.io
1个回答
0
投票

有很多不同的部分,每个部分都有不同的方法来优化聊天应用程序。

1。先前消息的分页: 不要一次获取所有先前的消息,而是首先加载一定数量的消息,并为用户提供一种根据需要加载更多消息的方法。这样,您可以控制传输和显示的数据量。 [您可以根据每条消息的屏幕设置一页的消息大小。]

2。优化服务器端缓存: 您可以将每个客户端的一些最新消息保存到缓存中。当用户单击某个对话时,他会直接收到一些消息,而无需加载/缓冲屏幕。这样您就可以增强用户交互。

3.数据库相关优化: 你还可以做一件事,就像当客户端收到新消息时,不要直接将每条消息推送到数据库,因为它需要一些时间才能放入数据库。您可以将其保存到后端,在特定时间后,您可以将这堆消息推送到数据库中。

我认为有很多方法可以优化聊天操作。快乐编码...!! :)

© www.soinside.com 2019 - 2024. All rights reserved.