SOCKET.IO 类比 angular 应用(与 rx.js)
SOCKET.IO analogy in angular application (with rx.js)
我正在开发 angular(2) 应用程序。
我想在后端数据更改时更新视图。
getData() {
return this.http.get("some url")
.map(result => result.json());
}
如何在我的组件中开发监听器,它将监听和更新视图?
因此,根据您的能力,有两种解决方案:
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()))
如果服务器实施良好(并且您发送正确的 headers),它可能会向您发送回一个 304
http 代码,您可以从中推断出自上次调用以来没有发生任何事情,你可以过滤掉这些情况。
希望对您有所帮助
我正在开发 angular(2) 应用程序。 我想在后端数据更改时更新视图。
getData() {
return this.http.get("some url")
.map(result => result.json());
}
如何在我的组件中开发监听器,它将监听和更新视图?
因此,根据您的能力,有两种解决方案:
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()))
如果服务器实施良好(并且您发送正确的 headers),它可能会向您发送回一个 304
http 代码,您可以从中推断出自上次调用以来没有发生任何事情,你可以过滤掉这些情况。
希望对您有所帮助