立即进行更改 PHP 或 Javascript

Make changes instantly PHP or Javascript

我有一个聊天系统,但我希望通知和消息都立即更新,我正在使用此代码 (setInterval),但它每 500 秒发出一次请求,所以我认为它不是很有效,是吗另一种方法吗?

setInterval(() => {
let xhr = new XMLHttpRequest();
  xhr.open("POST", "INCLUDES/funciones/get-chat.php", true);
  xhr.onload = () => {
    if (xhr.readyState === XMLHttpRequest.DONE) {
      if (xhr.status === 200) {
        let data = xhr.response;
        chatBox.innerHTML = data;
        if (!chatBox.classList.contains("active")) {

        }

      }
    }
  }

  let formData = new FormData(form);
  xhr.send(formData);
}, 500);

您应该检查 WebSockets。您可以通过降低 setInterval 的第二个参数来缩短请求之间的时间,但这会很糟糕。请求数量激增会给您的服务器带来巨大压力。

WebSocket,顾名思义,开启一个socket,一个服务器端和客户端之间的永久通信通道。这允许服务器向客户端发送消息。

优点是,如果没有消息准备好发送给客户端,则不会发送任何流量,也不会从客户端向服务器发出新请求。

这里不适合放置完整的聊天代码示例,因为它太长了。可以看到Socket.io not the fastest but maybe the easiest library to work with WebScokets. Here you can find an example of a working chat (server and client) using Socket.IO