涉及到充电桩的调试和数据迁移,我们决定使用转发中转服务,灵活的达到了和原有程序的无缝对接
需求就是从一个socket客户端A1接到消息转发给服务端B1,思路很简单,将中转程序当作一个服务端,就叫做服务端B2,然后再用workerman的AsyncTcpConnection的类做一个随着系统启动的TCP客户端A2,A2拿到服务端B2接到消息,连接服务器B1,转发给它
代码:
<?php
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
require_once './Workerman/Autoloader.php';
$worker = new Worker('tcp://0.0.0.0:8483');
$worker->count = 12;
// tcp连接建立后
$worker->onConnect = function($connection)
{
// 建立本地80端口的异步连接
$connection_to_80 = new AsyncTcpConnection('tcp://127.0.0.1:80');
// 设置将当前客户端连接的数据导向80端口的连接
$connection->pipe($connection_to_80);
// 设置80端口连接返回的数据导向客户端连接
$connection_to_80->pipe($connection);
// 执行异步连接
$connection_to_80->connect();
};
// 运行worker
Worker::runAll()
以上则是简单的转发程序代码