问题描述:我做了一个这样的项目,这个项目目前已经做到了这两个部分:1.单片机控制传感器采集数据,并利用网关模块(通过互联网)将数据发送到云服务器。 2. 用户可以在网站上查看上传到服务器的数据。
现在我想让用户通过网站,比如在网站上点击某台设备对应的“采集数据”这个按钮 ,那么下面对应的单片机,进行数据采集。要实现这个功能,那服务器端应该在收到网站上用户请求的时候(通过用户和服务器之间的连接),找到相对应单片机的client_id,通过这个id发送数据给单片机,让单片机采集数据。
那么如何才能在网站和服务器这个连接中(onMessage中),提取另外一个连接中单片机的client_id呢?
我考虑了一下 单片机连接到gatewayworker以后用全局变量保存这个单片机的client_id。之后用户有请求就直接通过这个id向单片机发送数据。但是如果这个单片机每次连接到服务器 client_id都不一样,那么这个办法就不行。
所以请问有其他可行方案吗?
设备连接上来后把自己的设备id报上来,然后gatewayworker的Events.php onMessage里通过 Gateway::bindUid(client_id, '设备id');,然后就可以在任意时候调用 Gateway::sendToUid('设备id', '数据');给对应设备发数据了