目前有一个需求是建立一个TCP客户端,与远端的TCP服务端交互。 为了方便使用,需要web端发送信息,然后后端将信息发送给TCP服务端,并与之交互,交互结果发送给web端
初步的想法是,
1.建立websocket服务端,与前端进行交互
2.websocket服务端接受到前端发送的数据后,在发送给TCP服务端
3.TCP服务端返回的数据,经过处理,再通过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服务器交互
};
$conn->connect();
};
$worker->onMessage = function ($connection, $data) {
//此处接受网站发送过来的websocket
//如何在此处向子进程的tcp服务器发送消息??
};
Worker::runAll ();
问题来了,在onMessage中,如何使用OnWorkerStart中创建的TCP客户端?
十分感谢! 有个小问题哈,我没在文档中发现Worker类有这个属性,这是魔术方法__set()吗
目前(php<=8.1)php的对象是可以动态添加任意属性的。
感谢
3.TCP服务端返回的数据,经过处理,再通过websocket推送给前端
//子进程启动后,建立tcp客户端,
$conn = new AsyncTcpConnection('tcp://127.0.0.1:8050');
$conn->onMessage = function($conn, $data) {
//这里与tcp服务器交互
再通过websocket推送给前端 这里代码怎么写呢 ?
$worker - > send($data); //是这样吗 嘿嘿嘿
};