天天看點

【2022/1/4】TCP和websocket通訊

TCP和websocket通訊

使用場景:通過網頁控制硬體裝置,或者硬體裝置的資訊顯示到網頁上
【2022/1/4】TCP和websocket通訊

所用技術

  1. PHP環境
  2. 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();
           
【2022/1/4】TCP和websocket通訊