如何在客户端实现 server-updates-listener
How to implement server-updates-listener in client side
我有一个关于设计模式的理论问题。
我希望我的客户端从我的服务器端接收事件,比方说当用户在聊天中收到一条新消息时。
假设我们在客户端 运行 JavaScript。
实现这一点的一种方法是从客户端向服务器定期发送请求 'Are there any updates?'
。这是低效的,因为当没有可用更新时我们将发送太多冗余请求。
有没有办法只在服务器端有更新时才从服务器端收听更新。例如在客户端实现 receiver/listener?如果 JavaScript 无法做到这一点,您还会怎么做?
谢谢。
这里有几个解决方案:
让您的 AJAX 请求 运行 进入定时循环。虽然不是实时的,但它具有类似于实时应用程序的属性。
var requestLoop = setInterval(function(){
//HTTP Request to update data here
}, 60000);
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
存在浏览器支持问题
Whosebug 对 WebSocket 的支持:What browsers support HTML5 WebSocket API?
我有一个关于设计模式的理论问题。 我希望我的客户端从我的服务器端接收事件,比方说当用户在聊天中收到一条新消息时。
假设我们在客户端 运行 JavaScript。
实现这一点的一种方法是从客户端向服务器定期发送请求 'Are there any updates?'
。这是低效的,因为当没有可用更新时我们将发送太多冗余请求。
有没有办法只在服务器端有更新时才从服务器端收听更新。例如在客户端实现 receiver/listener?如果 JavaScript 无法做到这一点,您还会怎么做?
谢谢。
这里有几个解决方案:
让您的 AJAX 请求 运行 进入定时循环。虽然不是实时的,但它具有类似于实时应用程序的属性。
var requestLoop = setInterval(function(){ //HTTP Request to update data here }, 60000);
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
存在浏览器支持问题
Whosebug 对 WebSocket 的支持:What browsers support HTML5 WebSocket API?