当发生服务器端更新时,如何更新 AngularJS 中的 $scope?

How can I update the $scope in AngularJS when a server sided update occurs?

背景

  1. 我正在尝试制作一个使用 PHP 、MYSQL 后端和 AngularJS 前端

    的单页实时应用程序
  2. 我的后端使用 CakePHP 框架,它服务于 JSON API,前端使用 AngularJS 中的 ngResource 来访问这个 API.

  3. 我有 'Ratchet WebSockets for PHP' 工作,它可以在后端更新某些内容时通过 websockets 触发对浏览器的响应。


我不完整的解决方案

解决方案 1: 通过 websocket 使用响应通过某种 $scope.model.push(websocket.data) 方法?

解决方案 2: 使用通过 websocket 的响应触发 ngResource 上的刷新,这将完全刷新 $scope 对象?


问题

我的解决方案可行吗?我怎样才能实现它?

您只需要从 WS 读取事件并使用 $emit$broadcast 填充它们,然后您的控制器就可以订阅与它们相关的任何事件。

看看:

angular websocket factory

AngularJS and WebSockets beyond