具有任意传感器数据的angular2组件的最佳实践

具有任意传感器数据的angular2组件的最佳实践,angular,angular2-services,Angular,Angular2 Services,我正在尝试一些angular2概念,在路上遇到了第一个障碍 我有一个websocket,可以推送带有传感器值的消息。这些值采用json对象的形式: { “传感器ID”:“1”, “传感器类型”:“2”, “传感器值”:“10.1” } 由于我无法控制它们何时进入,因此还有一个Web服务,可以用来查询来自特定传感器的最后一次看到的值,它还返回一个类似于上述的对象 现在的问题是,我应该如何在我的角度组件/服务中使用它?我有一个仪表板,我想在仪表板的不同部分显示各个传感器的值。我制作了一个senso

我正在尝试一些angular2概念,在路上遇到了第一个障碍

我有一个websocket,可以推送带有传感器值的消息。这些值采用json对象的形式:

{
“传感器ID”:“1”,
“传感器类型”:“2”,
“传感器值”:“10.1”
}
由于我无法控制它们何时进入,因此还有一个Web服务,可以用来查询来自特定传感器的最后一次看到的值,它还返回一个类似于上述的对象

现在的问题是,我应该如何在我的角度组件/服务中使用它?我有一个仪表板,我想在仪表板的不同部分显示各个传感器的值。我制作了一个sensor.component.ts,如:

从'@angular/core'导入{Component,Input};
从“./Sensor”导入{Sensor};
从“/sensor.service”导入{SensorService};
@组成部分({
选择器:'传感器',
模板:`
{{value}编号:'1.2-2'}
{{label}}({{unit}})
`
})
导出类传感器组件{
@Input()id:number;
@Input()类型:number=2;
@Input()标签:string=“N/A”;
@Input()大小:number=4;
@输入()单位:string=“不适用”;
值:数字=0;
错误消息:任何;
_传感器服务:传感器服务;
构造器(专用传感器服务:传感器服务){
这。_sensorService=sensorService;
}
恩戈尼尼特(){
this.\u sensorService.getSensor(this.id,this.type).subscribe(val=>this.value=val,error=>this.errorMessage=error);
}
}
以及随附的sensor.service.ts:

从'@angular/core'导入{Injectable};
从'@angular/Http'导入{Http,Response};
从“rxjs/Observable”导入{Observable};
导入“rxjs/add/operator/catch”;
导入'rxjs/add/operator/map';
@可注射()
出口级传感器服务{
专用传感器URL=”https://xxx/node/environment";
构造函数(私有http:http){}
getSensor(id:编号,类型:编号):可观察{
让url=this.sensorUrl+'?节点='+id.toString()+“&subType=“+type.toString()”;
返回此.http.get(url)
.map(此.extractData)
.接住(这个.把手错误);
}
私有数据(res:Response){
让body=res.json();
返回body.data | | 0;
}
私有句柄错误(错误:响应|任意){
让errMsg:string;
if(响应的错误实例){
const body=error.json();
const err=body.error | | JSON.stringify(body);
errMsg=`${error.status}-${error.statusText | |'''}${err}`;
}否则{
errMsg=error.message?error.message:error.toString();
}
控制台错误(errMsg);
返回可观察抛出(errMsg);
}
}
上面只是我查询的Web服务,但我不确定这是否是正确的方法,即在一个页面上多次调用该服务,每次请求不同的传感器


另外,我应该如何继续添加websocket listener,以便在我的应用程序中获取即时传感器值?

如果您想显示N个传感器的值,并且您只有一个web服务允许获取1个传感器的值,那么除了为每个传感器调用N次服务外,还有什么其他选择?关于代码,在没有任何参数编码的情况下,不要使用字符串连接来传递参数。使用params。理论上,我可以得到一个包含任意数量传感器值的数组,如果我调用时没有参数,我可以从所有传感器获得最新存储的值。我从一个旧项目复制了代码,在那里我一次只得到一个值。。此外,这是为了在应用程序/仪表板启动时进行初始化,初始化后,应建立websocket连接,该连接也会发布数据。然后使用它将使事情更加高效,因为你会用一个请求而不是N。这是否重要取决于你自己。但是我该怎么做呢?获取整个数据,将其存储在服务中的一个数组中,我从中提供数据?那么websocket接口呢,它向数据发送更新?如何将这些更改向上推送到组件?否。我将获取传感器阵列,并将该阵列存储在显示传感器列表的组件中,然后使用输入属性将每个传感器传递给传感器组件。关于WebSocket,这太宽泛了。阅读有关WebSocket的文档,并尝试一些方法。