如何将实时数据从 nodejs 服务器推送到 AngularJS?

Posted

技术标签:

【中文标题】如何将实时数据从 nodejs 服务器推送到 AngularJS?【英文标题】:How to push live data from nodejs server to AngularJS? 【发布时间】:2017-05-19 19:42:50 【问题描述】:

我已经成功地在服务器中打开了一个到外部 API 的 websocket 连接以获取交换代码数据,但不确定如何将数据持续推送到客户端/AngularJS。

这是路由器代码:

router.get('/live-ticker', function(req, res) 


  var autobahn = require('autobahn');
  var wsuri = "wss://api.poloniex.com";
  var connection = new autobahn.Connection(
    url: wsuri,
    realm: "realm1"
  );

  connection.onopen = function(session) 

    function tickerEvent(args, kwargs) 

      res.json(args);
      console.log(args);

    


    session.subscribe('ticker', tickerEvent);

  

  connection.onclose = function() 
    console.log("Websocket connection closed");
  

  connection.open();

);

我正在尝试做的是让来自tickerEvent 的数据实时更新前端的控制器:

app.controller('liveTickerController', function($scope, $http) 

  $scope.ticker = [];

  var request = $http.get('/live-ticker');

  request.success(function(ticker) 
    console.log(ticker); //only logging data once

    $scope.liveTicker = ticker;
  );

  request.error(function(err) 
    console.log('Error: ' + err);
  );

);

如何将实时更新推送到客户端?

谢谢

【问题讨论】:

【参考方案1】:

您需要定期从服务器推送数据。

要在客户端获得这些“实时更新”,简单的 ajax 调用是不够的, 您需要实时通信。

即使在这里你也应该使用 websoket,例如 socket.io 和 angular socket.io 你可以轻松处理这种通信

【讨论】:

谢谢,我一直在研究并提出了相同的方向

以上是关于如何将实时数据从 nodejs 服务器推送到 AngularJS?的主要内容,如果未能解决你的问题,请参考以下文章

如何将新数据从实时数据库推送到 Cloud Firestore?

成功登录后将用户数据从 Nodejs 服务器推送到 Angular

如何将数据推送到nodejs mongodb中的另一个模式

如何使用node js将消息从Web服务器推送到浏览器

需要有关将数据从服务器推送到客户端应用程序的建议

如何在nodeJS的mysql查询中将值推送到数组?