我在看手册的时候看到GatewayWorker与TP、YII框架等的整合,从图中看只有单向的调用关系,也就是说应用的PHP后台程序(API接口),去调用GatewayClient的方法发送数据给GatewayWorker服务器,然后GatewayWorker服务器在通过TCP协议发送数据给智能终端(空气净化器),这样只实现了物联网应用中的指令下发功能,智能终端主动上报的数据怎么接收?是需要在PHP后台程序(API接口)这块自己实现一个TCP的接收服务程序吗?让智能终端将数据发送给PHP后台程序(API接口)。这样的话非常难受啊!!!因为智能终端只能配置一个域名和一个端口,这个域名和端口已给GatewayWorker服务器用了,用来和GatewayWorker服务器建立连接,以便接收GatewayWorker服务器下发的指令。
这种情况,请问大神有什么解决办法?多谢!
另外追问,为什么GatewayWorker不实现和其它框架整合后的双向通讯呢?
[attach]612[/attach]
可以的,只是TP YII等框架是为传统WEB服务开发的,绑定了很多HTTP协议的内容,代码上比较难直接与GatewayWorker结合。例如onMessage中收到消息后如何路由到TP YII等代码中处理需要自己改造实现。
如果你对TP YII等框架很熟悉,自己会改造,是完全没问题的,完全可以做到双向通讯。
官网推荐的分开部署方式,也就是GatewayWorker 和 TP YII等分开部署,代码不耦合在一起。客户端通过http发送数据给TP YII处理业务逻辑,当业务逻辑需要给客户端推送数据时,利用GatewayClient调用GatewayWorker推送,这样耦合性很低,集成比较快,不用对TP YII等改造。
分开部署,代码保持松耦合是没问题,这是架构确实应该考虑的事。但是我的意思是GatewayWorker要是能够再后续版本中能够实现双向通讯就完美了,而且这是普遍需求!属于强需求!需求就是:GatewayWorker提供类库,只要加入TP YII等框架中,项目就可以根据自身调用这些类库了(就像GatewayClient只发送),再实现一个服务端,随时接收GatewayWorker主动发送过来的数据(*****负责接收)。这样对于开发者来说,使用这个workman或者GatewayWorker的难度进一步降低了,在场景上也完美适配了,更有利于workman或者GatewayWorker发展。
GatewayWorker一直是可以双向通讯的。你说的这些本身就是支持的。
解決了嗎,我也遇到這問題,頭大了