WorkerMan Connection類的使用(附代碼)

下面由workerman教程欄目給大家介紹workerman connection類的使用,希望對(duì)需要的朋友有所幫助!

WorkerMan Connection類的使用(附代碼)

一、TcpConnection類 的使用

?1、簡(jiǎn)單的TCP測(cè)試

Server.php

<?php require_once __DIR__.&#39;/Workerman/Autoloader.php&#39;; use WorkermanWorker; $worker = new Worker(&#39;websocket://0.0.0.0:80&#39;);// 連接回調(diào) $worker->onConnect?=?function?($connection){ ?????echo?"connection?successn"; }; //?接受發(fā)送消息 $worker-&gt;onMessage?=?function?($conn,$data){ ????$conn-&gt;send("Hello?World"); }; //?關(guān)閉連接 $worker-&gt;onClose?=?function?($connection){ ????echo?"connection?close?n"; }; $worker::runAll();

測(cè)試結(jié)果:

WorkerMan Connection類的使用(附代碼)

服務(wù)端輸出:

WorkerMan Connection類的使用(附代碼)

以下錯(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__.&#39;/Workerman/Autoloader.php&#39;; use WorkermanWorker; $worker = new Worker(&#39;tcp://0.0.0.0:8085&#39;); // 連接回調(diào) $worker->onConnect?=?function?($connection){ ????//?IP?白名單驗(yàn)證 ????if($connection-&gt;getRemoteIP()?!=?'127.0.0.1'){ ????????$connection-&gt;close("IP?Address?Forbidden"); ????} }; //?接受發(fā)送消息 $worker-&gt;onMessage?=?function?($conn,$data){ ????$conn-&gt;send("Hello?World"); }; //?關(guān)閉連接 $worker-&gt;onClose?=?function?($connection){ ????echo?"connection?close?n"; }; $worker::runAll();

開(kāi)啟Workerman服務(wù)

WorkerMan Connection類的使用(附代碼)

正確的訪問(wèn):

WorkerMan Connection類的使用(附代碼)

WorkerMan Connection類的使用(附代碼)

非本地地址訪問(wèn):

WorkerMan Connection類的使用(附代碼)

?二、AsyncTcpConnection類 的使用

Server.php

<?php require_once __DIR__.&#39;/Workerman/Autoloader.php&#39;; use WorkermanWorker; $worker = new Worker(&#39;websocket://0.0.0.0:443&#39;); // Workerman 啟動(dòng)的回調(diào),這里傳遞的是Worker對(duì)象 $worker->onWorkerStart?=?function?($worker){ ????echo?"onWorkerStart?success"; }; //?連接回調(diào) $worker-&gt;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-&gt;onMessage?=?function?($connection_baidu,$data)?use?($connection){ ????????$connection-&gt;send($data); ????}; ????//?瀏覽器接受的數(shù)據(jù)發(fā)送給百度 ????$connection-&gt;onMessage?=?function?($connection,$data)?use?($connection_baidu){ ????????$connection_baidu-&gt;send($data); ????}; ????$connection_baidu-&gt;connect(); }; //?接受發(fā)送消息 $worker-&gt;onMessage?=?function?($conn,$data){ ????$conn-&gt;send("Hello?World"); }; //?關(guān)閉連接 $worker-&gt;onClose?=?function?($connection){ ????echo?"connection?close?n"; };  //Workerman?停止回調(diào) $worker-&gt;onWorkerStop?=?function?($worker){ ????echo?"onWorkerStop?success"; }; $worker::runAll();

更多WorkerMan相關(guān)文章請(qǐng)關(guān)注workerman教程欄目。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊11 分享