TCP和websocket通信
应用场景:通过网页管制硬件设施,或者硬件设施的信息显示到网页上
所用技术
- PHP环境
- workerman
实现原理
启动一个websocket
服务端,过程启动的时候启动tcp,把tcp设置为websocket
的一个属性上socketArray
,而后在websocket
承受音讯的回调里获取socketArray
,循环取出tcp链接,发送音讯
代码
<?phpuse Workerman\Worker;require_once __DIR__ . '/vendor/autoload.php';$websocket = new Worker('Websocket://0.0.0.0:8888');$websocket->count = 1;$websocket->onWorkerStart = function ($websocket) { // 启动第一个tcp过程 $tcp1 = new Worker('tcp://0.0.0.0:6000'); // 设置到socketArray属性上 $websocket->tcpArray[] = $tcp1; $tcp1->listen(); // 启动第二个tcp $tcp2 = new Worker('tcp://0.0.0.0:6001'); $websocket->tcpArray[] = $tcp2; $tcp2->listen();};// 承受websocket音讯后转发给tcp$websocket->onMessage = function ($conn, $data) { global $websocket; foreach($websocket->tcpArray as $tcpItem) { foreach ($tcpItem->connections as $tcpConn) { $tcpConn->send($data); } }};Worker::runAll();