Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储聊天消息的推荐方法(node.js)_Node.js_Apache_Laravel_Socket.io - Fatal编程技术网

存储聊天消息的推荐方法(node.js)

存储聊天消息的推荐方法(node.js),node.js,apache,laravel,socket.io,Node.js,Apache,Laravel,Socket.io,这是我第一次开发需要聊天功能的web应用程序。有多个房间,并且没有关于有多少人可以加入一个房间的限制。我无法理解的部分是存储消息的实际方法。问题在两个部分更为严重……首先,我是否正确地假设,除非所有消息都存储在数据库中,否则新连接的用户无法保留所有以前的消息?其次,不建议在发送消息时将其保存到数据库中吗?如果它们不是实时保存的,我还能如何跟踪它们 感谢您的建议,非常感谢。持久性是一项业务需求,是的,除非您有某种持久性存储,否则新用户无法看到以前的消息。当然,你可以永久存储邮件,很多应用程序都可以

这是我第一次开发需要聊天功能的web应用程序。有多个房间,并且没有关于有多少人可以加入一个房间的限制。我无法理解的部分是存储消息的实际方法。问题在两个部分更为严重……首先,我是否正确地假设,除非所有消息都存储在数据库中,否则新连接的用户无法保留所有以前的消息?其次,不建议在发送消息时将其保存到数据库中吗?如果它们不是实时保存的,我还能如何跟踪它们


感谢您的建议,非常感谢。

持久性是一项业务需求,是的,除非您有某种持久性存储,否则新用户无法看到以前的消息。当然,你可以永久存储邮件,很多应用程序都可以做到这一点。您还可以临时存储它们,让消息在特定时间段后过期并被擦除。所有这些都可以通过使用常见工具(如MongoDB和Redis)轻松完成。如果不需要持久化消息,则需要使用web套接字在客户端之间发送消息。最著名的节点库可能是Socket.io。如果您想将数据存储在内存中并以一定的时间间隔保存,可以使用redis。此外,如果需要存储所有数据以供将来参考,您可以实施类似于resque的调度程序,将数据从redis传输到您的db,并为应用程序状态数据(即较新的数据)释放redis

希望这能帮助你


谢谢

嘿,谢谢你的回答……目前我正在使用socket.io来处理聊天过程,但消息不会持久。因此,使用Redis,我是否能够缓存消息并将其设置为在指定时间将其提交到持久性存储(即mysql数据库)?当新用户连接时,我假设我可以使用内存中的数据来检索当前消息?是的……从redis,您应该在最后一天或仅仅两天内提供更新的消息。这取决于数据量。一个Redis实例能够存储4GB的内存数据…更多信息,我们必须使用Redis群集…如果用户需要最近7天的数据等…那么您应该从mysql获取数据并显示它。。。