【问题标题】:$http and Streams? [closed]$http 和流? [关闭]
【发布时间】:2019-02-10 10:38:09
【问题描述】:

我想阅读App.net public stream。但是,当我使用简单的$http.get() 时,我只会得到一个响应。

$http
  .get('https://alpha-api.app.net/stream/0/posts/stream/global')
  .success(function (results) {
    console.log('received results', results);
  })
;

如何在 AngularJS 中连接到 http 流?
有没有办法或者我必须使用 WebSockets 之类的东西?

【问题讨论】:

  • rtm,结构为:{data: [...]},在您的情况下:results.data 将包含 20 个条目。
  • @Yoshi 这是正确的,我可以在控制台中轻松看到。但是,我必须创建另一个 $http.get(); 才能获取新帖子 - 但我想访问 http 流,而不是进行长轮询。
  • 我认为这更多的是关于您正在使用的 api 的问题。在文档中,我看不到它在哪里说任何长轮询都是可能的。只需从全球信息流中返回 20 个最近的帖子。.
  • @Yoshi oic。似乎文档模糊地使用了“流”一词。我想我找错地方了。如果合适,将更新我的问题 - 或回答它。感谢您指出这一点。

标签: javascript angularjs


【解决方案1】:

$http 只是一个请求。对于长轮询,请定期使用$interval 调用它。

function MyCtrl($scope, $timeout) {
  function poll() {
    $http.get('...').success(function(data) {
      $scope.posts = data;
    });
    $timeout(poll, 10000);
  }

  poll();
}

你也可以创建一个服务来封装这个逻辑,但是你需要一个固定的数据结构来更新,而不是改变结果。类似this

【讨论】:

  • 如果这是一个持久连接,您宁愿使用 Socket.io 和自定义服务。 Here's a example.
  • 我相信它的 $timeout 而不是 $interval ?
  • 你是对的。我创建了一个$interval 服务并忘记了它是自定义的。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2015-06-05
  • 2011-05-04
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
相关资源
最近更新 更多