硬件数据推送给特定手机端

0

我使用的gateway,硬件传输数据的时候可以带上当前硬件设备的pid,然后我用gateway推送给当前正在使用这台硬件设备的用户手机app上。是不是就是要这手机app连接的时候也传过来这台设备的pid,然后这两个客户端建立单独的连接通讯,那我服务端要怎么判断呢?如果硬件用tcp长连接把数据存数据库,然后然后app用http轮询调用倒是可以实现。 只是我希望服务端也能通过和app长连直接推送,这样应该更快一些

已邀请:

walkor

赞同来自:

1、设备连接gateway
2、设备发送一个pid登录请求,gateway中Events::onMessage回调中收到请求,得到pid进行绑定,Gateway::bindUid($client_id, $pid);,同时设置$_SESSION=$pid,用来gateway记录当前设备pid
3、因为设备绑定了pid,那么gateway服务端可以通过Gateway::sendToUid($pid, $data);给任意设备发送数据
4、同样app链接gateway
5、app发送一个请求,请求中包含要查看的pid
6、gateway中Events::onMessage回调中收到app请求,得到要查看的pid,用Gateway::joinGroup($client_id, $pid); 加入分组(或者叫订阅这个pid发来的消息)
7、设备pid传输数据到gateway,gateway中Events::onMessage回调中收到数据,首先判断$_SESSION是否存在,存在的话证明这个设备验证过pid,并绑定过pid。没有验证过则进入步骤2验证绑定。
如果已经验证,则Events::onMessage回调中调用Gateway::sendToGroup($_SESSION, $data)给pid分组发送数据,那么6步骤中joinGroup过的app将会收到对应pid设备发来的数据

要回复问题请先登录注册