使用$rootScope.emit方法来传播来自websocket的通信是一个好的选择吗?他们有什么明显的缺点吗?我的应用程序中有websocket连接,我也使用$http服务。我在考虑通过emit传播服务器响应对于两者来说是否是一个好的选择,以统一一点的通信。
发布于 2013-11-28 05:22:41
首先请注意,$rootScope.$broadcast和$rootScope.$emit都通过$scope树以不同的方向广播事件,因此请确保您使用的是正确的方向。在您的情况下,我将使用$rootScope.$broadcast。
至于事件输出套接字和http通信的结果,好处是多个组件都可以通过为您正在广播的事件添加$on侦听器来轻松地对这些事件做出反应。如果您需要多个组件来侦听,这是一个好主意。这样做的代价是事件将产生的额外开销。这并不重要,但它确实存在。在web套接字的情况下,如果套接字服务器非常健谈,您可能会得到通过$scope树传播的大量事件。我建议,如果控制器或服务是唯一需要与web服务对话的控制器或服务,那么它应该直接这样做,然后简单地更新$scope属性,以便任何已经绑定到作用域的组件都将获得更改。如果您的用例更复杂,那么它可能确实需要事件解决方案。
在我自己的angular webapp中,我选择创建一个服务来包装websocket通信,然后感兴趣的组件可以注入该服务并注册为只接收他们感兴趣的消息。通过这种方式,我避免了在整个$scope树中运行大量不必要的事件流量,因为有一个非常健谈的websocket服务器(在我的特定情况下)。
https://stackoverflow.com/questions/20253075
复制相似问题