$worker = new Worker('websocket://0.0.0.0:8998');
$all_connections = [];
$worker->onMessage = function($con, $data) {
// 假設(shè)已知設(shè)備ip和端口
$ip = '121.40.*.*'; $port = 8990;
// 獲取與設(shè)備的連接
$device_connection = get_connection($ip, $port);
$device_connection->onError = function($connection, $code, $msg)
{
echo "error $code $msg\n";
};
$device_connection->onConnect=function ($con){
dump("tcp連接成功");
};
// 設(shè)備發(fā)來數(shù)據(jù)時
$device_connection->onMessage = function($device_connection, $data){
dump($data);
};
// 給設(shè)備發(fā)數(shù)據(jù)
$device_connection->send('');
};
function get_connection($ip, $port)
{
static $all_connections = [];
$addr = $ip.":".$port;
if (isset($all_connections[$addr])) {
return $all_connections[$addr];
}
$con_to_device = new AsyncTcpConnection('tcp://'.$addr);
// 與設(shè)備的連接關(guān)閉時,1秒后重新自動連接
$con_to_device->onClose = function($con_to_device){
$con_to_device->reconnect(1);
};
$con_to_device->connect();
$all_connections[$addr] = $con_to_device;
return $con_to_device;
}
// 運(yùn)行worker
Worker::runAll();
1.網(wǎng)頁端的websocket發(fā)送的消息指令通過AsyncTcpConnection類轉(zhuǎn)發(fā)給tcp,2.tcp收到指令后返回消息通過websocket顯示在網(wǎng)頁端;
大佬幫忙看下是哪里出現(xiàn)問題了,連接不上tcp
這個是我重新寫的一個測試worker,只監(jiān)聽一個tcp協(xié)議的8990端口,可以正常的發(fā)送數(shù)據(jù)和返回數(shù)據(jù),同時也能telnet到8990端口