【问题标题】:read message status by both users in chat system [closed]在聊天系统中读取两个用户的消息状态[关闭]
【发布时间】:2016-06-03 05:48:32
【问题描述】:

我正在创建基于 ajax 的 PHP 实时聊天系统,我面临消息状态的问题,假设如果用户 A 向用户 B 发送消息,那么该消息需要显示给用户 A 和用户B.

我使用状态为 0 的未读消息,以在聊天窗口上显示消息,但它只显示给一个用户而不是其他用户,因为将间隔更新状态设置为每 2 秒后 1。

我的想法是使用两种不同的状态,一种用于用户 A,一种用于用户 B。 这是正确的方法还是有其他方法可以做到?

请提供建议。

【问题讨论】:

  • 为什么发件人需要阅读邮件?
  • 在聊天系统中,两个用户都需要显示消息。我正在创建实时聊天系统。
  • 我怀疑您不是第一个创建聊天系统的人。其他人如何处理这方面的问题?

标签: php jquery mysql chat


【解决方案1】:

在我的旧项目中,我总是每三 (3) 秒运行一次脚本。它提交最新消息的最后一个 ID,脚本会检查是否有一个 ID 高于当前会话的最新消息 ID,如果是,它将加载这些消息。

一个简化的例子是:

<div id="message-div">
    <div id="49" class="mes">User 1: What's up?</div>
    <div id="50" class="mes">User 2: Okay. How about you?</div>
    <div id="51" class="mes">User 1: Pretty fine.</div>
</div>

我的脚本将每三 (3) 秒运行一次,并使用 Ajax 提交最新的 ID(上面的示例是 51)。它会检查是否有高于 51 的 ID,然后将 append() 发送到 #message-div

只需确保在附加新消息时包含该消息的 ID。

var new-message = '<div id="52" class="mes">User 2: That is good to hear.</div>'; /* THIS COMES FROM AN AJAX REQUEST */
$("#message-div").append(new-message);

我没有使用status 列或其他任何内容。我为read 功能所做的就是有一个额外的表来存储用户阅读消息时的日期和时间。

 read_id | message_id | user_id |      read_date
---------+------------+---------+---------------------
    1    |     51     |    2    | 2016-06-03 14:29:30 /* USER 2 READ MESSAGE 51 IN JUNE 3, 2016 AT 2:26 PM */
    2    |     52     |    1    | 2016-06-03 14:30:10

【讨论】:

  • 我认为您的答案有所不同但很有用,我需要据此更改我的代码,但我认为它可以正常工作。
  • 我必须维护最后一个 id,并继续检查它是否在表中增加,如果增加,那么我会显示,对吗?
  • @Adas - 是的,没错。如果有更高的message_id,它将检查您数据库中的表,如果是,它将加载该/那些消息/s。
  • 好吧,我不想要 read_date 之类的列,因为我已经使用了时间戳,并将从中检查时间。但是让我更改我的代码并实施您的解决方案,我一定会选择您的答案。
  • @adas - 您可以将read_date 列的数据类型设置为DATETIMETIMESTAMP
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 2020-01-16
  • 2013-02-02
  • 2018-10-09
  • 2021-02-05
  • 2012-12-10
  • 2011-11-16
  • 1970-01-01
相关资源
最近更新 更多