我试图通过我的Angular 2应用程序中的socket.io接收一些表格数据。最初我使用observables来处理这个问题 - 这是按预期工作的。然而,在切换到套接字时,这证明有些问题。但是现在我想知道在这种情况下是否真的需要使用一个observable。我的假设是,当您有定期更新的数据时,最好使用observable。但在我的情况下,我引入了相当静态的基本表格数据。在这种情况下使用observable是否必要?这有点矫枉过正吗?
当我使用http并将其包装在一个observable中时,这就是我的代码:
getByCategory() {
return this._http.get(this._url)
.map((response:Response) => response.json())
.catch(this._errorsHandler);
}
_errorsHandler(error: Response) {
console.error(error);
return Observable.throw(error.json().error || 'Server error');
}
然后,在我的组件中,我订阅了这样的内容:
this.contactService.getByCategory()
.subscribe(resRecordsData => this.records = resRecordsData,
responseRecordsError => this.errorMsg = responseRecordsError);
这是我的服务代码在不使用observable的情况下使用套接字的样子。如果有什么东西看起来,或者可以用可观察的东西写出来,我可以听到这个:
getByCategory() {
console.log('getByCategory was just called on socket...');
let socket = io.connect(this._url, this.args);
socket.on('clients.getByCategory', function (data) {
if (data === isNullOrUndefined) {
console.log('No data to show!');
return;
}
console.log(data);
return data;
});
}