现在项目需要用到两个协议,一个是http,一个是自定义的json,因此有两个gateway,一个负责监听http,一个负责监听json,而我的需求是,当http有发送数据时,将这个数据转为json,然后转发到连接json gateway的客户端,但现在发现http发过来的数据会调用http的gateway,转发给json客户端时发送时client_id显示为空,我感觉是这个client_id是保存在json的gateway那里的,所以http的gateway不能获取到,请问怎么让http的gateway监听到数据时能够转发到json上的客户端连接??
gateway不用监听http端口。
网页将数据post任意mvc框架(tp yii等),mvc框架里里用gatewayClient将要推送的数据推给客户端。
参见手册 http://www.workerman.net/gatewaydoc/advanced/push.html
我这边是这样一个情况,后台采用gatewayworker,创建一个http服务一个json服务,如下所示
http负责获取手机app的请求,然后要把请求发给json那边。我知道json客户端client_id,但是在http的onMessage函数中却没法发出去?
app请求http,http处理完之后发给指定的车载端(以json格式协议),通过Gateway::sendToClient('c0a801910fa100000001', "ok");(c0a801910fa100000001为车载端client_id),但是车载端收不到发送的数据。在同一个协议下可以发送给任何连接上的客户端,但是在两个协议没法发送了,怎么办呢?
按照手册多协议部分 配置正确的话是没问题,对照手册检查下看看是不是哪里弄错了。
还有client_id是不是弄错了,可以用Gateway::sendToAll('xxx');发下试试
已经解决了,如下所示,把http和json放在了一个服务里面,而不是起两个实例。然后在Events.php的onMessage函数中通过 if($_SERVER == 8484),写http逻辑;if($_SERVER == 8282) 写json逻辑。
Events中的http端口onMessage里,可以使用$_POST这些函数吗?我用这些函数全部收不到值。