天天看點

workerman介紹TcpConnection類

連接配接的接口是抽象的 ConnectionInterface.php

每個用戶端連接配接對應一個Connection對象,可以設定對象的onMessage、onClose等回調,同是提供了向客戶資料send接口與關閉連接配接close接口,以及其它一些必要的接口

workerman介紹TcpConnection類

id 目前連接配接用戶端編号 ,自增的整數

protocol 設定目前連接配接的協定類

worker 此屬性為隻讀屬性,即目前connection對象所屬的worker執行個體

調用worker執行個體 。就可以擷取這個$connection->worker的所有連接配接connection

用戶端所有的連接配接都foreach循環都給你發送一遍

  $worker->onMessage = function($connection,$data) { 

    foreach($connection->woreker->connections as $conn) { 

      $conn->send('lampol');

    }

  }
           
workerman介紹TcpConnection類
workerman介紹TcpConnection類
workerman介紹TcpConnection類

列印 var_dump(($connection->woreker)

workerman介紹TcpConnection類
workerman介紹TcpConnection類

maxSendBufferSize

 每個連接配接都有一個單獨的應用層發送緩沖區,如果用戶端接收速度小于服務端發送速度,資料會在應用層緩沖區暫存等待發送。

此屬性用來設定目前連接配接的應用層發送緩沖區大小。不設定預設為

Connection::defaultMaxSendBufferSize(1MB)。

此屬性影響onBufferFull回調。

 $worker->onConnect = function($connection)
 {  
    // 在裡面設定是目前連接配接
    // 設定目前連接配接的應用層發送緩沖區大小為102400位元組
    $connection->maxSendBufferSize = 102400;
  };
           

defaultMaxSendBufferSize

此屬性為全局靜态屬性,用來設定所有連接配接的預設應用層發送緩沖區大小。不設定預設為1MB。 Connection::$defaultMaxSendBufferSize可以動态設定,設定後隻對之後産生的新連接配接有效
           

此屬性影響onBufferFull回調。

workerman介紹TcpConnection類

回調屬性

onMessage

作用與Worker::$onMessage回調相同,差別是隻針對目前連接配接有效,也就是可以針對某個連接配接的設定onMessage回調。

use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';

$worker = new Worker('websocket://0.0.0.0:8484');

// 直接設定所有連接配接的onMessage回調
$worker->onMessage = function($connection, $data)
{
    var_dump($data);
    $connection->send('receive success');
};

// 當有用戶端連接配接事件時
$worker->onConnect = function($connection)
{
    // 設定連接配接的onMessage回調
    $connection->onMessage = function($connection, $data)
    {
        var_dump($data);
        $connection->send('receive success');
    };
};
// 運作worker
Worker::runAll();
           

接口

getRemoteIp 獲得該連接配接的用戶端ip

getRemotePort 獲得該連接配接的用戶端端口

pauseRecv 使目前連接配接停止接收資料。該連接配接的onMessage回調将不會被觸發。此方法對于上傳流量控制非常有用

workerman介紹TcpConnection類

resumeRecv

  使目前連接配接繼續接收資料。此方法與Connection::pauseRecv配合使用,對于上傳流量控制非常有用

workerman介紹TcpConnection類

http://doc.workerman.net/tcp-connection/resume-recv.html #官網資料

繼續閱讀