下面由workerman教程欄目給大家介紹workerman connection類的使用,希望對(duì)需要的朋友有所幫助!
一、TcpConnection類 的使用
?1、簡(jiǎn)單的TCP測(cè)試
Server.php
<?php require_once __DIR__.'/Workerman/Autoloader.php'; use WorkermanWorker; $worker = new Worker('websocket://0.0.0.0:80');// 連接回調(diào) $worker->onConnect?=?function?($connection){ ?????echo?"connection?successn"; }; //?接受發(fā)送消息 $worker->onMessage?=?function?($conn,$data){ ????$conn->send("Hello?World"); }; //?關(guān)閉連接 $worker->onClose?=?function?($connection){ ????echo?"connection?close?n"; }; $worker::runAll();
測(cè)試結(jié)果:
服務(wù)端輸出:
以下錯(cuò)誤表示,里面的連接協(xié)議沒(méi)有修改掉原因。
www@iZ23s8agtagZ:~$?telnet?127.0.0.1?8085 Trying?127.0.0.1... Connected?to?127.0.0.1. Escape?character?is?'^]'. ^[[A^[[A HTTP/1.1?400?Bad?Request <b>400?Bad?Request</b><br>Invalid?handshake?data?for?websocket.?<br>?See?<a>http://wiki.workerman.net/Error1</a>?for?detail.Connection?closed?by?foreign?host.
2、黑白名單的訪問(wèn)
Server.php
<?php require_once __DIR__.'/Workerman/Autoloader.php'; use WorkermanWorker; $worker = new Worker('tcp://0.0.0.0:8085'); // 連接回調(diào) $worker->onConnect?=?function?($connection){ ????//?IP?白名單驗(yàn)證 ????if($connection->getRemoteIP()?!=?'127.0.0.1'){ ????????$connection->close("IP?Address?Forbidden"); ????} }; //?接受發(fā)送消息 $worker->onMessage?=?function?($conn,$data){ ????$conn->send("Hello?World"); }; //?關(guān)閉連接 $worker->onClose?=?function?($connection){ ????echo?"connection?close?n"; }; $worker::runAll();
開(kāi)啟Workerman服務(wù)
正確的訪問(wèn):
非本地地址訪問(wèn):
?二、AsyncTcpConnection類 的使用
Server.php
<?php require_once __DIR__.'/Workerman/Autoloader.php'; use WorkermanWorker; $worker = new Worker('websocket://0.0.0.0:443'); // Workerman 啟動(dòng)的回調(diào),這里傳遞的是Worker對(duì)象 $worker->onWorkerStart?=?function?($worker){ ????echo?"onWorkerStart?success"; }; //?連接回調(diào) $worker->onConnect?=?function?($connection){ ????$connection_baidu?=?new?WorkermanConnectionAsyncTcpConnection('tcp://www.baidu.com:443'); ????//?百度的數(shù)據(jù)發(fā)送給瀏覽器。返回?cái)?shù)據(jù)后,使用的數(shù)據(jù)要use?進(jìn)來(lái), ????$connection_baidu->onMessage?=?function?($connection_baidu,$data)?use?($connection){ ????????$connection->send($data); ????}; ????//?瀏覽器接受的數(shù)據(jù)發(fā)送給百度 ????$connection->onMessage?=?function?($connection,$data)?use?($connection_baidu){ ????????$connection_baidu->send($data); ????}; ????$connection_baidu->connect(); }; //?接受發(fā)送消息 $worker->onMessage?=?function?($conn,$data){ ????$conn->send("Hello?World"); }; //?關(guān)閉連接 $worker->onClose?=?function?($connection){ ????echo?"connection?close?n"; }; //Workerman?停止回調(diào) $worker->onWorkerStop?=?function?($worker){ ????echo?"onWorkerStop?success"; }; $worker::runAll();
更多WorkerMan相關(guān)文章請(qǐng)關(guān)注workerman教程欄目。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END