如何在客户端实现 server-updates-listener

How to implement server-updates-listener in client side

我有一个关于设计模式的理论问题。 我希望我的客户端从我的服务器端接收事件,比方说当用户在聊天中收到一条新消息时。

假设我们在客户端 运行 JavaScript。 实现这一点的一种方法是从客户端向服务器定期发送请求 'Are there any updates?'。这是低效的,因为当没有可用更新时我们将发送太多冗余请求。

有没有办法只在服务器端有更新时才从服务器端收听更新。例如在客户端实现 receiver/listener?如果 JavaScript 无法做到这一点,您还会怎么做?

谢谢。

这里有几个解决方案:

  1. 让您的 AJAX 请求 运行 进入定时循环。虽然不是实时的,但它具有类似于实时应用程序的属性。

    var requestLoop = setInterval(function(){
      //HTTP Request to update data here
    }, 60000);
    
  2. WebSockets。这正是它们的开发目的,"With this API, you can send messages to a server and receive event-driven responses without having to poll the server for a reply." 注意:Edge/IE

  3. 存在浏览器支持问题

补充:Writing WebSockets for JS

Whosebug 对 WebSocket 的支持:What browsers support HTML5 WebSocket API?