我想通过获取某种响应或确认来ping ip-address以获得它是否存活的响应。
ping() {
return this.http.get('http://192.168.2.101')
}
this.deviceService.ping().subscribe(result => {
console.log(result)
})
但得到错误
请指导!!!
这是一个例子,如果有人从客户端做到这一点,一个用例可能是你必须知道客户端是否在线,例如在Ionic应用程序中。
请参阅this.stackblitz中的完整工作示例
import { HttpClient } from "@angular/common/http";
import { first } from "rxjs/operators";
import { Subscription } from 'rxjs';
...
private source = interval(3000);
...
this.source.subscribe(() => {
this._http.get('https://www.google.com', { observe: 'response' })
.pipe(first())
.subscribe(resp => {
if (resp.status === 200 ) {
console.log(true)
} else {
console.log(false)
}
}, err => console.log(err));
});
first()很重要,只取第一个值,因为interval会产生新的请求,这就是我们避免内存泄漏的方法。
{observe:'response'}是我们告诉httpClient返回完整的http对象而不是单独的主体的方式,这样我们就可以访问状态代码了。