目前有一個需求是建立一個TCP客戶端,與遠端的TCP服務(wù)端交互。 為了方便使用,需要web端發(fā)送信息,然后后端將信息發(fā)送給TCP服務(wù)端,并與之交互,交互結(jié)果發(fā)送給web端
初步的想法是,
1.建立websocket服務(wù)端,與前端進行交互
2.websocket服務(wù)端接受到前端發(fā)送的數(shù)據(jù)后,在發(fā)送給TCP服務(wù)端
3.TCP服務(wù)端返回的數(shù)據(jù),經(jīng)過處理,再通過websocket推送給前端
代碼如下
use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
$worker = new Worker ( 'websocket://0.0.0.0:5678' );
$worker->onWorkerStart=function($worker){
//子進程啟動后,建立tcp客戶端,
$conn = new AsyncTcpConnection('tcp://127.0.0.1:8050');
$conn->onMessage = function($conn, $data) {
//這里與tcp服務(wù)器交互
};
$conn->connect();
};
$worker->onMessage = function ($connection, $data) {
//此處接受網(wǎng)站發(fā)送過來的websocket
//如何在此處向子進程的tcp服務(wù)器發(fā)送消息??
};
Worker::runAll ();
問題來了,在onMessage中,如何使用OnWorkerStart中創(chuàng)建的TCP客戶端?
use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
$worker = new Worker ( 'websocket://0.0.0.0:5678' );
$worker->onWorkerStart=function($worker){
//子進程啟動后,建立tcp客戶端,
$conn = new AsyncTcpConnection('tcp://127.0.0.1:8050');
$conn->onMessage = function($conn, $data) {
//這里與tcp服務(wù)器交互
};
$conn->connect();
$worker->conn = $conn;
};
$worker->onMessage = function ($connection, $data) use ($worker) {
$worker->conn->send('xxx');
};
Worker::runAll ();
3.TCP服務(wù)端返回的數(shù)據(jù),經(jīng)過處理,再通過websocket推送給前端
//子進程啟動后,建立tcp客戶端,
$conn = new AsyncTcpConnection('tcp://127.0.0.1:8050');
$conn->onMessage = function($conn, $data) {
//這里與tcp服務(wù)器交互
再通過websocket推送給前端 這里代碼怎么寫呢 ?
$worker - > send($data); //是這樣嗎 嘿嘿嘿
};