gpt4 book ai didi

javascript - 几秒钟后重新加载聊天的另一种方法

转载 作者:行者123 更新时间:2023-11-28 01:34:26 25 4
gpt4 key购买 nike

所以我正在实现一个聊天室。我将从我使用的架构开始。

  • 我有一个 room 表,它主要存储有关聊天室的信息,例如参与者数量、主题等。
  • 我有一个存储用户信息的 users 表。
  • 我有一个用于存储帖子的 posts 表。它具有来自用户和房间表的外键。
  • 此外,我还有一个决赛 table ,用于建立用户和房间之间的关系。所以它只有房间成员的 roomid 和 userid。

现在,我在页面上有三个 div,一个用于聊天区域,另一个用于显示在线人员,然后是一个用于发布消息的文本区域。

我目前正在做的是,有一个 JavaScript 函数 loadChats(),现在这个方法调用一个 php 文件,该文件仅获取该特定房间中的所有帖子直到现在。同样的内容被转储到我的 div 中,即“聊天室”。另外,类似地,我有一个 loadParticipants() 每隔一秒加载一次用户。

我使用 jquery.post 来达到目的,并且在方法的最后,我在函数的末尾执行了一个 setTimeout 。现在这是我的问题

当然我可以做得更好。有什么建议么?我想到了一些。

  1. 每次调用 php 时,我都会获取整个聊天记录并将其发送回浏览器,当然我可以检查消息数是否与客户端相同,如果是,那么我不会发送的消息。但这会让事情变得更好吗?怎么办?
  2. 此外,每隔一秒调用一次服务器端似乎有点过分了。有没有什么办法可以做到这一点,如果一些新的聊天添加到 posts 表中,那么该特定的聊天室就会收到通知并更新?即,不要不断地 ping 服务器来请求新的请求,只需询问一次,然后等待是否有新的请求。当该请求完成后,它会再次 ping 服务器以进行下一次更新。

最佳答案

您应该研究一下 websockets(我从未在 PHP 中使用过它们,但这似乎很有前途: http://socketo.me/ )。你可以做的是让服务器在任何新消息进来时将其推送到客户端,并让每个客户端推送到服务器,等等。这样你就不必每 2 次不断地 ping 服务器。秒,并加载大量数据进行比较。当有新消息时,服务器将其保存到某个数据库,然后通过所有打开的套接字推送该消息。与登录/注销相同。

编辑:只需进一步查看页面,他们的教程甚至介绍了如何使用基本的聊天室式功能进行设置。

关于javascript - 几秒钟后重新加载聊天的另一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21697292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com