您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman的AsyncTcpConnection类的transport属性都利用实现https连接客户端
发布时间:2021-12-04 23:50:15编辑:雪饮阅读()
transport属性
设置传输属性,可选值为 tcp 和 ssl,默认是tcp。
transport为 ssl 时,要求PHP必须安装openssl扩展。
[root@izj6c2jeancylo0ppo4vz5z workerman]php -m
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
filter
ftp
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib
[Zend Modules]
当把Workerman作为客户端向服务端发起ssl加密连接(https连接、wss连接等)时请设置此选项为ssl,例如下面的例子。
实例:
<?php
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$task = new Worker();
// 进程启动时异步建立一个到www.youtube.com连接对象,并发送数据获取数据
$task->onWorkerStart = function($task)
{
$connection_to_youtube = new AsyncTcpConnection('tcp://www.youtube.com:443');
// 设置为ssl加密连接
$connection_to_youtube->transport = 'ssl';
$connection_to_youtube->onConnect = function(AsyncTcpConnection $connection_to_youtube)
{
echo "connect success\n";
$connection_to_youtube->send("GET / HTTP/1.1\r\nHost: www.youtube.com\r\nConnection: keep-alive\r\n\r\n");
};
$connection_to_youtube->onMessage = function(AsyncTcpConnection $connection_to_youtube, $http_buffer)
{
echo $http_buffer;
};
$connection_to_youtube->onClose = function(AsyncTcpConnection $connection_to_youtube)
{
echo "connection closed\n";
};
$connection_to_youtube->onError = function(AsyncTcpConnection $connection_to_youtube, $code, $msg)
{
echo "Error code:$code msg:$msg\n";
};
$connection_to_youtube->connect();
};
// 运行worker
Worker::runAll();
?>
实例运行并获取youtube响应的部分内容
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test.php start | grep -i "http" | head -n 10
HTTP/1.1 200 OK
Report-To: {"group":"AXrpQdexiF0ssZ_nH8Dr-M3QgbdVRvO77RECMA","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/encsid_AXrpQdexiF0ssZ_nH8Dr-M3QgbdVRvO77RECMA"}]}
P3P: CP="This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl=zh-HK for more info."
Set-Cookie: GPS=1; Domain=.youtube.com; Expires=Sat, 04-Dec-2021 02:59:18 GMT; Path=/; Secure; HttpOnly
Set-Cookie: YSC=r6uoJz1Goxo; Domain=.youtube.com; Path=/; Secure; HttpOnly; SameSite=none
Set-Cookie: VISITOR_INFO1_LIVE=6f8gzWozABw; Domain=.youtube.com; Expires=Thu, 02-Jun-2022 02:29:18 GMT; Path=/; Secure; HttpOnly; SameSite=none
<!DOCTYPE html><html style="font-size: 10px;font-family: Roboto, Arial, sans-serif;" lang="zh-Hant-HK" system-icons typography typography-spacing><head><meta http-equiv="X-UA-Compatible" content="IE=edge"/><script nonce="1pacHZKZ8X1MBJ4hTetfZA">var ytcfg={d:function(){return window.yt&&yt.config_||ytcfg.data_||(ytcfg.data_={})},get:function(k,o){return k in ytcfg.d()?ytcfg.d()[k]:o},set:function(){var a=arguments;if(a.length>1)ytcfg.d()[a[0]]=a[1];else for(var k in a[0])ytcfg.d()[k]=a[0][k]}};
var combinedLineAndColumn=err.lineNumber;if(!isNaN(err["columnNumber"]))combinedLineAndColumn+=":"+err["columnNumber"];var stack=err.stack||"";var values={"msg":message,"type":err.name,"client.params":"unhandled window error","file":err.fileName,"line":combinedLineAndColumn,"stack":stack.substr(0,500)};var thirdPartyScript=!err.fileName||err.fileName==="<anonymous>"||stack.indexOf("extension://")>=0;var replaced=stack.replace(/https:\/\/www.youtube.com\//g,"");if(replaced.match(/https?:\/\/[^/]+\//))thirdPartyScript=
true;else if(stack.indexOf("trapProp")>=0&&stack.indexOf("trapChain")>=0)thirdPartyScript=true;else if(message.indexOf("redefine non-configurable")>=0)thirdPartyScript=true;var baseUrl=window["ytcfg"].get("EMERGENCY_BASE_URL","https://www.youtube.com/error_204?t=jserror&level=ERROR");var unsupported=message.indexOf("window.customElements is undefined")>=0;if(thirdPartyScript||unsupported)baseUrl=baseUrl.replace("level=ERROR","level=WARNING");var parts=[baseUrl];for(var key in values){var value=values[key];
window.polymerSkipLoadingFontRoboto = true;</script><link rel="shortcut icon" href="https://www.youtube.com/s/desktop/1b183e4b/img/favicon.ico" type="image/x-icon"><link rel="icon" href="https://www.youtube.com/s/desktop/1b183e4b/img/favicon_32x32.png" sizes="32x32"><link rel="icon" href="https://www.youtube.com/s/desktop/1b183e4b/img/favicon_48x48.png" sizes="48x48"><link rel="icon" href="https://www.youtube.com/s/desktop/1b183e4b/img/favicon_96x96.png" sizes="96x96"><link rel="icon" href="https://www.youtube.com/s/desktop/1b183e4b/img/favicon_144x144.png" sizes="144x144"><title>YouTube</title><link rel="canonical" href="https://www.youtube.com/"><link rel="alternate" media="handheld" href="https://m.youtube.com/"><link rel="alternate" media="only screen and (max-width: 640px)" href="https://m.youtube.com/"><meta property="og:image" content="https://www.youtube.com/img/desktop/yt_1200.png"><meta property="fb:app_id" content="87741124305"><link rel="publisher" href="https://plus.google.com/115229808208707341778"><link rel="alternate" href="android-app://com.google.android.youtube/http/www.youtube.com/"><link rel="alternate" href="ios-app://544007664/vnd.youtube/www.youtube.com/"><meta name="description" content="YouTube 上盡享你喜愛的影片和音樂、上載原創內容,並與親友和世界各地的人分享。"><meta name="keywords" content="影片, 分享, 攝影手機, 視像電話, 免費, 上載"><script nonce="1pacHZKZ8X1MBJ4hTetfZA">var ytcsi={gt:function(n){n=(n||"")+"data_";return ytcsi[n]||(ytcsi[n]={tick:{},info:{}})},now:window.performance&&window.performance.timing&&window.performance.now&&window.performance.timing.navigationStart?function(){return window.performance.timing.navigationStart+window.performance.now()}:function(){return(new Date).getTime()},tick:function(l,t,n){var ticks=ytcsi.gt(n).tick;var v=t||ytcsi.now();if(ticks[l]){ticks["_"+l]=ticks["_"+l]||[ticks[l]];ticks["_"+l].push(v)}ticks[l]=v},info:function(k,
关键字词:workerman,AsyncTcpConnection,transport,https
上一篇:workerman的AsyncTcpConnection类的reConnect 方法实现异步断线重连
下一篇:workerman的AsyncUdpConnection类的__construct构造方法及connect 方法实现同脚本共存udp客户端与服务端
相关文章
- workerman的AsyncTcpConnection类的reConnect 方法实
- workerman的AsyncTcpConnection类的connect 方法实现
- workerman类TcpConnection的接口send
- workerman类TcpConnection的接口pipe通道实现流量控制
- workerman类TcpConnection的接口pauseRecv实现上传流
- workerman类TcpConnection的接口pauseRecv实现上传流
- workerman类TcpConnection的worker属性
- workerman类TcpConnection的id属性
- workerman类TcpConnection的protocol属性
- workerman类TcpConnection的回调属性onClose