我想咨询下 业务处理完成后能不能通过网关 建立多个tcp将数据发送到指定的服务器 并接收返回信息
不知道怎么实现怎么写
new AsyncTcpConnect
https://www.workerman.net/doc/workerman/async-tcp-connection/construct.html
你好 我想问下 在gatewayworkman 的业务服务器中使用AsyncTcpConnect 消息是 直接在业务服务器转发 还是在网关转发
请详细说明 应用场景,用A、B、C来详细说明场景
A数据采集设备 B企业平台 C国家平台 要求 B企业采集的设备数据 要实时转发到C国家平台 国家平台提交资料的时候有ip限制 比如1个 因为采集设备信息较多 B企业平台中的业务服务器较多 处理完成业务后直接转发到C国家平台 因为ip限制的原因可能就不合适了 转发到C国家平台后 还需要接收C国家平台返回的确定信息 并更改B企业平台中的数据库 更改发送和接收标识
<?php require __DIR__ .'/vendor/autoload.php'; $workerman=new \Workerman\Worker(); $workerman->name='采集器B企业'; $workerman->onWorkerStart=function (){ //这里写curl代码,并且缓存到redis或者mysql }; $pushGovPlatform=new \Workerman\Worker(); $pushGovPlatform->name='推送到GOV'; $workerman->onWorkerStart=function (){ //从redis读取任务队列 //curl 提交给国家平台 //结果返回,修改数据库 }; \Workerman\Worker::runAll();
如果需要更进一步的疑问,请在此详细说明
你好 我使用的是 gatewayWorkman 推送到GOV的代码 应该写在网关服务器是吗? $workerman->onWorkerStart=function (){ //从redis读取任务队列 是不是写错了 应该 $pushGovPlatform->onWorkerStart=function (){ //从redis读取任务队列 这里细节上还有部分细节问题 1 一种设备类型要建立一个tcp 就是说要多个tcp 2 就是有可能实时添加一个新的类型 或者删除禁用一个类型 对应的tcp要关闭
$pushGovPlatform=new \Workerman\Worker(); $pushGovPlatform->name='推送到GOV'; $asyncTcps=[]; $pushGovPlatform->onWorkerStart=function (){ $list =[1,2,3]; //设备类型 $address='tcp://www.baidu.com:80'; global $asyncTcps; foreach ($list as $key){ $connect=new AsyncTcpConnection($address); $connect->id=$key; $connect->onConnect=function (AsyncTcpConnection $con){ Monitor::onContent($con); }; $connect->onMessage=function (AsyncTcpConnection $con){ Monitor::onMessage($con); }; $connect->onClose=function (AsyncTcpConnection $con){ Monitor::onClose($con); }; $connect->onError=function (AsyncTcpConnection $con){ Monitor::onError($con); }; $connect->connect(); $asyncTcps[$key]=$connect; } //从redis读取任务队列 //判断设备类型 选用正确的tcp连接 //curl 提交给国家平台 //结果返回,修改数据库()
}; 动态 添加和删除的时候直接处理 asyncTcps 对不对
new AsyncTcpConnect
https://www.workerman.net/doc/workerman/async-tcp-connection/construct.html
你好 我想问下 在gatewayworkman 的业务服务器中使用AsyncTcpConnect 消息是 直接在业务服务器转发 还是在网关转发
请详细说明 应用场景,用A、B、C来详细说明场景
A数据采集设备 B企业平台 C国家平台 要求 B企业采集的设备数据 要实时转发到C国家平台 国家平台提交资料的时候有ip限制 比如1个 因为采集设备信息较多 B企业平台中的业务服务器较多 处理完成业务后直接转发到C国家平台 因为ip限制的原因可能就不合适了 转发到C国家平台后 还需要接收C国家平台返回的确定信息 并更改B企业平台中的数据库 更改发送和接收标识
如果需要更进一步的疑问,请在此详细说明
你好 我使用的是 gatewayWorkman 推送到GOV的代码 应该写在网关服务器是吗?
$workerman->onWorkerStart=function (){
//从redis读取任务队列 是不是写错了
应该 $pushGovPlatform->onWorkerStart=function (){
//从redis读取任务队列
这里细节上还有部分细节问题
1 一种设备类型要建立一个tcp 就是说要多个tcp
2 就是有可能实时添加一个新的类型 或者删除禁用一个类型 对应的tcp要关闭
$pushGovPlatform=new \Workerman\Worker();
$pushGovPlatform->name='推送到GOV';
$asyncTcps=[];
$pushGovPlatform->onWorkerStart=function (){
$list =[1,2,3]; //设备类型
$address='tcp://www.baidu.com:80';
global $asyncTcps;
foreach ($list as $key){
$connect=new AsyncTcpConnection($address);
$connect->id=$key;
$connect->onConnect=function (AsyncTcpConnection $con){
Monitor::onContent($con);
};
$connect->onMessage=function (AsyncTcpConnection $con){
Monitor::onMessage($con);
};
$connect->onClose=function (AsyncTcpConnection $con){
Monitor::onClose($con);
};
$connect->onError=function (AsyncTcpConnection $con){
Monitor::onError($con);
};
$connect->connect();
$asyncTcps[$key]=$connect;
}
//从redis读取任务队列
//判断设备类型 选用正确的tcp连接
//curl 提交给国家平台
//结果返回,修改数据库()
};
动态 添加和删除的时候直接处理 asyncTcps 对不对