我想咨詢下 業(yè)務處理完成后能不能通過網(wǎng)關 建立多個tcp將數(shù)據(jù)發(fā)送到指定的服務器 并接收返回信息
不知道怎么實現(xiàn)怎么寫
new AsyncTcpConnect
http://www.wtbis.cn/doc/workerman/async-tcp-connection/construct.html
你好 我想問下 在gatewayworkman 的業(yè)務服務器中使用AsyncTcpConnect 消息是 直接在業(yè)務服務器轉(zhuǎn)發(fā) 還是在網(wǎng)關轉(zhuǎn)發(fā)
A數(shù)據(jù)采集設備 B企業(yè)平臺 C國家平臺 要求 B企業(yè)采集的設備數(shù)據(jù) 要實時轉(zhuǎn)發(fā)到C國家平臺 國家平臺提交資料的時候有ip限制 比如1個 因為采集設備信息較多 B企業(yè)平臺中的業(yè)務服務器較多 處理完成業(yè)務后直接轉(zhuǎn)發(fā)到C國家平臺 因為ip限制的原因可能就不合適了 轉(zhuǎn)發(fā)到C國家平臺后 還需要接收C國家平臺返回的確定信息 并更改B企業(yè)平臺中的數(shù)據(jù)庫 更改發(fā)送和接收標識
<?php
require __DIR__ .'/vendor/autoload.php';
$workerman=new \Workerman\Worker();
$workerman->name='采集器B企業(yè)';
$workerman->onWorkerStart=function (){
//這里寫curl代碼,并且緩存到redis或者mysql
};
$pushGovPlatform=new \Workerman\Worker();
$pushGovPlatform->name='推送到GOV';
$workerman->onWorkerStart=function (){
//從redis讀取任務隊列
//curl 提交給國家平臺
//結(jié)果返回,修改數(shù)據(jù)庫
};
\Workerman\Worker::runAll();
如果需要更進一步的疑問,請在此詳細說明
你好 我使用的是 gatewayWorkman 推送到GOV的代碼 應該寫在網(wǎng)關服務器是嗎?
$workerman->onWorkerStart=function (){
//從redis讀取任務隊列 是不是寫錯了
應該 $pushGovPlatform->onWorkerStart=function (){
//從redis讀取任務隊列
這里細節(jié)上還有部分細節(jié)問題
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 提交給國家平臺
//結(jié)果返回,修改數(shù)據(jù)庫()
};
動態(tài) 添加和刪除的時候直接處理 asyncTcps 對不對