前段时间一直忙于做基于gatewayworker的三端互联.
主要就是:
硬件发送消息给服务器, 然后服务器转发给APP.。APP发送消息到服务器, 然后转发给硬件设备
上图中的通讯为双向(本人作图能力实在欠缺)
如图所示, 我使用的是Gatewayworker框架, 中间也是在同一项目部署了一个TCP的协议, 一个Websocket协议(因为硬件那只能访问TCP, 软件只能访问WS)
关于Gatewayworker的下载 可以直接去手册: Gatewayworker手册
GatewayWorker的安装+初步连通
- 下载好了之后把GatewayWorker复制一份命名为WSGatewayWorker
- 更改WSGatewayWorker中的服务注册地址(自带的应该是1238, 此处我更改为1239), 注意是三个文件都改. 更改Gateway进程地址(自带应该8282, 我改为8283), 更改内部通讯地址(自带2900 我改为3000)
- 然后更改后使用前端代码测试下, 此处注意链接地址如果是本地就127.0.0.1 放到服务器上一定要是服务器IP或者域名地址
- Websocket链接没问题之后, 测试TCP连接, 这块可以用windows自带的telnet命令, 也可以下载类似于硬件使用的终端, 进行TCP连接
- 两处连接没问题后进入一下流程
两端通讯的打通
- 打开手册中的 常见问题 -> 在其他项目中主动推送消息打开 下载对应的GatewayClient源码, 然后部署到项目中
- 修改GatewayClient中的注册地址, 分别对应TCP, WS的注册地址(切记, 不要在同一个方法进程中使用这两个GatewayClient, 不然会报错)
- 下面进行业务流程: TCPGatewayWorker接收到消息然后使用curl_post转发给指定业务接口(例: api/do_socket) , 然后在业务流程中使用Websocket对应的GatewayClient(此处命名为: WSGatewayClient), 给APP推送消息. 然后返回消息给curl_post. TCPGateWorker去判断就行
至于以后的流程,这块主要用作自己的业务逻辑进行判断, 这只是一个大概的流程, 简单的给同学们介绍一下如何在同一个服务器同一个项目使用两个不同协议的GatewayWorker