gatewayworker 用TCP协议传输数据,在TP框架中怎么接收

baijjgu

我自己写了一个通讯协议,硬件发送数据过来的时候,在Events.php可以接收得到;但项目是用Thinkphp3.2.3写的,我现在想把这个接收到的数据推送给Thinkphp处理一些逻辑上的问题或者说是把这个数据存到数据库中。

很多朋友建议我用websocket来处理,官方手册我也看了,也是介绍websocket;

但我想说的是,我的硬件设备只能连到gatewayworker,在只有硬件的情况下(硬件开机后就会自动发送指令,这个时候),有没有什么办法,把数据发送到gatewayworker上的时候,Thinkphp直接把这个接收到的数据存到数据库,或者说gatewayworker怎么把数据库推送到Thinkphp去处理。

还有一点:我的硬件信息是硬件工程提供的,已经写死了,我能从他那里拿到的都只是一些硬件的指令

PS:gateway_client在PHP中是个什么作用?只是为了给gatewayworker推送数据的话,我能够直接推给我的硬件吗?

要是有示例代码就更好了。万分感谢!

5792 5 1
5个回答

damao

GatewayWorker收到消息后可以curl调用TP啊

GatewayClient是可以在TP里远程调用Gateway给客户端(你这里就是硬件)推送消息的

  • baijjgu 2017-11-10

    我有设备(也就是硬件),也有手机端界面。如果设备量大或者手机端用户量多的情况下,curl把数据发送给TP 的时候会不会靠成gatewayworker阻塞?

Jeffrey

如果只是存数据库的话,那直接存就好了。我也是做的硬件,所有逻辑都在Gateway下处理了。解决办法还是有很多的,主要看怎么做合适。

  • 暂无评论
lringdxq

楼主做出来了吗,我现在也是跟楼主有一样的需求

  • 暂无评论

最简单的办法是在 GatewayWorker 里面直接操作数据库,如果会很频繁也不建议操作数据库 ,直接搭配redis之类的使用,tp的接口请求的时候直接去redis获取设备信息

  • 暂无评论
不败少龙

在event.php里面处理 可以用composer require workerman/mysql组件 直接在onMessage里面处理数据
当然也可以用curl的方式去调用tp写的api接口处理

  • 暂无评论
年代过于久远,无法发表回答
🔝