TCP 和 websocket 通信
应用场景:通过网页管制硬件设施,或者硬件设施的信息显示到网页上
所用技术
- PHP 环境
- workerman
实现原理
启动一个
websocket
服务端,过程启动的时候启动 tcp,把 tcp 设置为websocket
的一个属性上socketArray
,而后在websocket
承受音讯的回调里获取socketArray
,循环取出 tcp 链接,发送音讯
代码
<?php
use 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();