合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
[TOC] # **ConnectionInterface** ``` // ::$statistics // $onMessage // $onClose // $onError // abstract send($send_buffer); // abstract getRemoteIp(); // abstract getRemotePort(); // abstract getRemoteAddress(); // abstract getLocalIp(); // abstract getLocalPort(); // abstract getLocalAddress(); // abstract isIPv4(); // abstract isIPv6(); // abstract close($data = null); ``` ## **TcpConnection** ``` // READ_BUFFER_SIZE // (TcpConnection/self)::READ_BUFFER_SIZE // STATUS_INITIAL // STATUS_CONNECTING // STATUS_ESTABLISHED // STATUS_CLOSING // STATUS_CLOSED // $onMessage = function (AsyncTcpConnection $connection, $data) {} !!!!! // $onClose= function (AsyncTcpConnection $connection) {} !!!!! // $onError= function (AsyncTcpConnection $connection, $code, $msg) {} !!!!! // $onBufferFull = function (AsyncTcpConnection $connection) {} !!!!! // $onBufferDrain = function (AsyncTcpConnection $connection) {} !!!!! // 无 $onConnect // $protocol // $transport // $worker // $bytesRead // $bytesWritten // $id // $maxSendBufferSize // $context // ::$defaultMaxSendBufferSize // $maxPackageSize // ::$defaultMaxPackageSize // ::$connections // ::$_statusToString // __construct($socket, $remote_address = '') // getStatus($raw_output = true) // send($send_buffer, $raw = false) !!!!! // getRemoteIp() !!!!! // getRemotePort() !!!!! // getRemoteAddress() // getLocalIp() // getLocalPort() // getLocalAddress() // isIpV4() // isIpV6() // close($data = null, $raw = false) !!!!! // getSendBufferQueueSize() // getRecvBufferQueueSize() // pauseRecv() !!!!! // resumeRecv() !!!!! // baseRead($socket, $check_eof = true) // baseWrite() // doSslHandshake($socket) // pipe(self $dest, $raw = false) // consumeRecvBuffer($length) // getSocket() // bufferIsEmpty() // destroy() !!!!! // __destruct() ``` ### **AsyncTcpConnection** ``` // $onConnect = function (AsyncTcpConnection $connection) {} // $transport // __construct($remote_address, array $context_option = array()) // connect() // reconnect($after = 0) // cancelReconnect() // getRemoteHost() // getRemoteURI() // checkConnection() ``` 示例: ``` require_once __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; use Workerman\Connection\TcpConnection; use Workerman\Connection\AsyncTcpConnection; $task = new Worker(); // 进程启动时异步建立一个到www.baidu.com连接对象,并发送数据获取数据 $task->onWorkerStart = function($task){ $connection_to_baidu = new AsyncTcpConnection('tcp://www.baidu.com:443'); // 设置为ssl加密连接 $connection_to_baidu->transport = 'ssl'; $connection_to_baidu->onConnect = function(AsyncTcpConnection $connection_to_baidu){ echo "connect success\n"; $connection_to_baidu->send("GET / HTTP/1.1\r\nHost: www.baidu.com\r\nConnection: keep-alive\r\n\r\n"); }; $connection_to_baidu->onMessage = function(AsyncTcpConnection $connection_to_baidu, $http_buffer){ echo $http_buffer; }; $connection_to_baidu->onClose = function(AsyncTcpConnection $connection_to_baidu){ echo "connection closed\n"; }; $connection_to_baidu->onError = function(AsyncTcpConnection $connection_to_baidu, $code, $msg){ echo "Error code:$code msg:$msg\n"; }; $connection_to_baidu->connect(); }; // 运行worker Worker::runAll(); ``` ## **UdpConnection** ``` // protocol // transport // __construct($socket, $remote_address) // send($send_buffer, $raw = false) // getRemoteIp() // getRemotePort() // getRemoteAddress() // getLocalIp() // getLocalPort() // getLocalAddress() // isIpV4() // isIpV6() // close($data = null, $raw = false) // getSocket() ``` ~~~ // ::$statistics // $onMessage = function(UdpConnection $connection, $data) // $onClose // $onError // abstract send($send_buffer); // abstract getRemoteIp(); // abstract getRemotePort(); // abstract getRemoteAddress(); // abstract getLocalIp(); // abstract getLocalPort(); // abstract getLocalAddress(); // abstract isIPv4(); // abstract isIPv6(); // abstract close($data = null); ~~~ ### **AsyncUdpConnection** ``` // $onConnect // $onClose // __construct($remote_address, $context_option = null) // function baseRead($socket) // send($send_buffer, $raw = false) // close($data = null, $raw = false) // connect() ```