背景
您好,我们线下(每个门店有一个软件)的软件是使用 Nodejs 写的服务。现在开通了线上服务,因为有些数据需要去线下取,又因线下 IP地址不固定,无法走 HTTP,所以目前计划使用的是 PHP与线下软件使用 websocket 通讯。
场景例子
用户小程序端获取某位会员的账单流水
小程序请求API -> PHP接口处理 -> PHP 将任务转发给 Workerman处理 -> Workerman下发给线下 Nodejs 服务 -> 线下查询数据后返回给 Workerman -> Workerman 接收到数据后返回至第二步的 PHP接口?
待解决问题
- Workerman 接收到线下返回的数据后,如何返给PHP 的接口?
- 或者是否有其它的解决方案?
可能的解决方案
加入数据缓存层:线下数据返回后,写入到 Redis 中。此时PHP的接口不断等待去查询缓存,直到查询到后再接口返回。
问题:存在阻塞的问题,如果线下或 websocket 有问题,会一直阻塞其它的请求。
敬请各位大佬解惑。
已使用加入缓存的方式解决,业务处理让前端去处理。
PHP接口接收到请求后,先查询缓存数据,如果没找到则下发网关请求线下数据,此时直接返回。让前端去轮询接口,直到有真的返回值停止。
感谢,结贴。