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

时间:2017-05-19 19:42:50

标签: javascript angularjs node.js websocket

我已成功在服务器中打开一个websocket连接到外部API以获取交换自动收报机数据但不确定如何连续将数据推送到客户端/ 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 个答案:

答案 0 :(得分:2)

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

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

你应该在这里使用websoket,socket.ioangular socket.io例如你可以轻松处理这种沟通