walkor 9 роки тому
батько
коміт
4c0fc3b5d4
1 змінених файлів з 144 додано та 4 видалено
  1. 144 4
      README.md

+ 144 - 4
README.md

@@ -21,6 +21,7 @@ composer require workerman/workerman
 ### A websocket server 
 ```php
 <?php
+require_once __DIR__ . '/vendor/autoload.php';
 use Workerman\Worker;
 
 // Create a Websocket server
@@ -213,7 +214,7 @@ $task->onWorkerStart = function($task)
 Worker::runAll();
 ```
 
-### AsyncTcpConnection
+### AsyncTcpConnection (tcp/ws/text/frame etc...)
 ```php
 require_once __DIR__ . '/vendor/autoload.php';
 use Workerman\Worker;
@@ -241,7 +242,7 @@ $worker->onWorkerStart = function()
 Worker::runAll();
 ```
 
-### Work with Async Mysql of ReactPHP
+### Async Mysql of ReactPHP
 ```
 composer require react/mysql
 ```
@@ -287,7 +288,7 @@ $worker->onMessage = function($connection, $data) {
 Worker::runAll();
 ```
 
-### Work with Async Redis of ReactPHP
+### Async Redis of ReactPHP
 ```
 composer require clue/redis-react
 ```
@@ -329,7 +330,7 @@ $worker->onMessage = function($connection, $data) {
 Worker::runAll();
 ```
 
-### Work with Aysnc dns of ReactPHP
+### Aysnc dns of ReactPHP
 ```
 composer require react/dns
 ```
@@ -358,6 +359,145 @@ $worker->onMessage = function($connection, $host) {
 Worker::runAll();
 ```
 
+### Http client of ReactPHP
+```
+composer require react/http-client
+```
+
+```php
+<?php
+require_once __DIR__ . '/vendor/autoload.php';
+use Workerman\Worker;
+
+$worker = new Worker('tcp://0.0.0.0:6161');
+
+$worker->onWorkerStart = function() {
+    global   $client;
+    $loop    = Worker::getEventLoop();
+    $factory = new React\Dns\Resolver\Factory();
+    $dns     = $factory->createCached('8.8.8.8', $loop);
+    $factory = new React\HttpClient\Factory();
+    $client = $factory->create($loop, $dns);
+};
+
+$worker->onMessage = function($connection, $host) {
+    global     $client;
+    $request = $client->request('GET', trim($host));
+    $request->on('error', function(Exception $e) use ($connection) {
+        $connection->send($e);
+    });
+    $request->on('response', function ($response) use ($connection) {
+        $response->on('data', function ($data, $response) use ($connection) {
+            $connection->send($data);
+        });
+    });
+    $request->end();
+};
+
+Worker::runAll();
+```
+
+### Http client of ReactPHP
+```
+composer require react/http-client
+```
+
+```php
+<?php
+require_once __DIR__ . '/vendor/autoload.php';
+use Workerman\Worker;
+
+$worker = new Worker('tcp://0.0.0.0:6161');
+
+$worker->onWorkerStart = function() {
+    global   $client;
+    $loop    = Worker::getEventLoop();
+    $factory = new React\Dns\Resolver\Factory();
+    $dns     = $factory->createCached('8.8.8.8', $loop);
+    $factory = new React\HttpClient\Factory();
+    $client = $factory->create($loop, $dns);
+};
+
+$worker->onMessage = function($connection, $host) {
+    global     $client;
+    $request = $client->request('GET', trim($host));
+    $request->on('error', function(Exception $e) use ($connection) {
+        $connection->send($e);
+    });
+    $request->on('response', function ($response) use ($connection) {
+        $response->on('data', function ($data, $response) use ($connection) {
+            $connection->send($data);
+        });
+    });
+    $request->end();
+};
+
+Worker::runAll();
+```
+
+### ZMQ of ReactPHP
+```
+composer require react/zmq
+```
+
+```php
+<?php
+require_once __DIR__ . '/vendor/autoload.php';
+use Workerman\Worker;
+
+$worker = new Worker('text://0.0.0.0:6161');
+
+$worker->onWorkerStart = function() {
+    global   $pull;
+    $loop    = Worker::getEventLoop();
+    $context = new React\ZMQ\Context($loop);
+    $pull    = $context->getSocket(ZMQ::SOCKET_PULL);
+    $pull->bind('tcp://127.0.0.1:5555');
+
+    $pull->on('error', function ($e) {
+        var_dump($e->getMessage());
+    });
+
+    $pull->on('message', function ($msg) {
+        echo "Received: $msg\n";
+    });
+};
+
+Worker::runAll();
+```
+
+### STOMP of ReactPHP
+```
+composer require react/stomp
+```
+
+```php
+<?php
+require_once __DIR__ . '/vendor/autoload.php';
+use Workerman\Worker;
+
+$worker = new Worker('text://0.0.0.0:6161');
+
+$worker->onWorkerStart = function() {
+    global   $client;
+    $loop    = Worker::getEventLoop();
+    $factory = new React\Stomp\Factory($loop);
+    $client  = $factory->createClient(array('vhost' => '/', 'login' => 'guest', 'passcode' => 'guest'));
+
+    $client
+        ->connect()
+        ->then(function ($client) use ($loop) {
+            $client->subscribe('/topic/foo', function ($frame) {
+                echo "Message received: {$frame->body}\n";
+            });
+        });
+};
+
+Worker::runAll();
+```
+
+
+
 ## Available commands
 ```php test.php start  ```  
 ```php test.php start -d  ```