角度应用中的SOCKET.IO类比(使用rx.js)

时间:2017-06-15 07:48:24

标签: javascript angular typescript rxjs frontend

我正在开发angular(2)应用程序。 我希望在后端数据发生变化时更新视图。

  getData() {
      return this.http.get("some url")
      .map(result => result.json());
  }

如何在我的组件中开发监听器,这将是监听和更新视图?

1 个答案:

答案 0 :(得分:0)

所以,两种解决方案取决于你能做什么:

1 - 您具有对服务器代码的写访问权

然后,您可以在服务器上实现websocket支持,然后使用https://github.com/ohjames/rxjs-websockets之类的工具自动将套接字事件包装在rxjs observables中。

2 - 您没有对服务器代码的写访问权

那么,在这种情况下,您将不得不定期轮询服务器。看起来像这样:

Rx
  .Observable
  .timer(0, 1000) // once every second
  .mergeMap(_ => this.http.get("/url").map(json => result.json()))

如果服务器实施得很好(并且您发送了正确的标头),它可能会向您发送一个304 http代码,您可以从中推断出自上次通话以来没有发生任何事情,您可以过滤掉这些例。

希望有所帮助