聊天应用程序,如何存储聊天记录?

时间:2018-03-12 18:58:37

标签: java postgresql list text chat

我正在用Java开发一个聊天应用程序。

使用的架构是服务器 - 客户端架构 大部分代码都是Java,JavaFX代表GUI,PostgreSQL代表数据库。

由于这是一个聊天应用程序(桌面),我想知道哪个是存储聊天记录的最佳方式:

  1. 本地文本文件中,客户端必须每次都读取
  2. 在类型为String(VarChar)的数据库中
  3. 在服务器中列为
  4. 基于三种方式的一些问题:

    1. 如果客户端从其他计算机连接,则文本文件将不在那里
    2. 是否可以使用chatroomID存储数据库中的每个文本条目?
    3. 只要它运行,服务器中可以存储多少个对象?

3 个答案:

答案 0 :(得分:0)

我会说Nr2 - 出于安全原因(如果你关心它)并且因为它是一种非常简单的方法。 首先,具有4列的数据库应该足够(日期/时间,ChatroomID,UserID或只是名称和消息本身)。如果用户发送新消息,则会创建一个包含列所需的所有信息的新行。当客户端重新加载时(可能每10秒钟),您也可以轻松地遍历它

答案 1 :(得分:0)

我处于类似的情况,我也在开发一个0的聊天,唯一的区别是我正在为iOS做这个。

我正在开发聊天的方式是:

  1. 我使用的是Ubuntu网络服务器。

  2. 服务器在Mysql中有一个数据库,与用户的通信是通过NodeJS完成的。

  3. 在NodeJS中,我有一个套接字“Socket.io”,可以方便用户之间的通知。
  4. 在iOS设备上,我将它收到的所有邮件存储在Core Data中,这是SQLite的扩展。
  5. 为了根据用户连接的设备获取待处理消息,并且我为每个设备使用ID,此ID由MAC物理地址创建和标识,从而从服务器获取哪些消息以及不
  6. 最初我基于这个数据库来了解如何构建我的应用程序:https://github.com/yoosuf/Messenger

    Socket.IO非常容易使用,最好的是它有不同编程语言的库,这里是它的页面: https://socket.io/ https://github.com/socketio/socket.io

答案 2 :(得分:0)

在您的三个选择中,我建议您选择选项#2来存储聊天记录:数据库,这就是原因:

  1. 如果您将聊天记录存储在文本文件中,则会遇到诸如如何与他人同步等问题。此外,您可以修改文本文件的内容,而无需通过Java程序(例如使用编辑器)。如果此文件包含具有敏感信息的聊天,并且有人可以访问您的计算机,则他们可以阅读该文件。这意味着麻烦。
  2. 存储在数据库中是个好主意,因为它为所有Java程序提供了一个中心位置。如果有多个人使用您的Java客户端,这种方式特别方便,他们可以通过这种方式获取聊天记录,以及轻松地将聊天记录转移给其他人!我不仅会使用类型String(VarChar),而是尝试考虑一些可能有用的其他有用字段或列(即timeSent,chatUserID,timeRead等)。这也表明,通过使用数据库,您可以设置某种用户访问权限(用户名和密码),以便特定人员可以阅读特定聊天。
  3. 如果您将聊天记录作为Java服务器本身的列表存储在服务器上,并且服务器重新启动,会丢失所有聊天记录。 Bummer。
  4. 总而言之,保持Java客户端 - 服务器 - 数据库架构非常好,从技术上讲,所有3个选项都可以工作,但数据库是存储聊天记录的方法!即使设置数据库需要一些工作,但由于数据库是为存档数据而构建的,因此在所描述的其他两种方法中,它被证明在效率和安全性方面更胜一筹。