【问题标题】:Calling angularjs controller from websocket event handlers从 websocket 事件处理程序调用 angularjs 控制器
【发布时间】:2014-07-22 19:13:34
【问题描述】:

我是 angularjs 的新手,可以使用一些关于使用 WebSocket 连接到后端的应用程序设计的指导。当套接字收到一个 onmessage 事件时,它应该加载一个动态视图。在加载视图之前,需要根据一些消息参数来构建模型。

那么,从 onmessage 事件处理程序调用控制器函数是一种可接受的角度解决方案,还是有更角度的做事方式?如果可以接受,我该如何做到这一点?我应该调用路由并将路由参数传递给控制器​​吗?谢谢。

【问题讨论】:

  • 如果后端通过 websocket 发送数据独立于用户发起任何事情,我会使用 $broadcast 到 $broadcast 无论你的后端什么推送到应用程序。然后,您可以从应用程序中的任何位置获取此事件。

标签: angularjs events controller websocket


【解决方案1】:

如果 onmessage 事件是 websocket 服务器对客户端请求的响应,您可以使用角度服务 $q 使用承诺/延迟实现。这是一个很好的解释:http://clintberry.com/2013/angular-js-websocket-service/

如果onmessage事件是从websocket服务器推送数据,你可以使用$broadcast广播onmessage事件,使用控制器中的$on监听广播事件。

我有可以帮助你的代码。它是使用 websocket 为 xively.com REST API 提供的角度服务:https://github.com/mgalela/ngxively

【讨论】:

    【解决方案2】:

    您不会调用控制器。您只需更改到视图的路由并在那里运行初始化逻辑。

    这可以通过几种方式完成。如果您需要初始化视图的数据很小,您可以将其作为路由参数(也称为状态参数)。

    网址将如下所示:

    http://yoursite.org/theView/theParameter
    

    如果数据很大,您可以拥有一个服务,两个控制器都将注入以共享数据。

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多