|
2 | 2 |
|
3 | 3 | 首先得必须说明一下什么是客户端,所谓客户端,就是咱们所指的 "消费者",服务器,也有可能是客户端。可以这么理解,只要是发起请求到另外一段获取获取的,即可视为客户端。因此有时候咱们的服务器,也是其中一个客户端。 |
4 | 4 |
|
5 | | -客户端最后通过 `resolve` 进行调用。 |
6 | | - |
7 | | -### 客户端命令行 |
8 | | - |
9 | | -> 1.1.0 新增 |
10 | | -
|
11 | | -当用户输入 (quit/exit) 的时候,客户端自动退出当前循环。 |
12 | | - |
13 | | -默认数据为: `Hello World` |
14 | | - |
15 | | -```php |
16 | | -$ php swoole [host] [port] |
17 | | -``` |
18 | | - |
19 | | -效果: |
20 | | - |
21 | | -``` |
22 | | -➜ swoole (1.1) ✗ php swoole 11.11.11.22 9527 |
23 | | -Please enter the send data.(default: Hello World, Enter (exit/quit) can be exit console.): |
24 | | -Receive: Hello World |
25 | | -Please enter the send data.(default: Hello World, Enter (exit/quit) can be exit console.): exit |
26 | | -``` |
27 | | - |
28 | 5 | ### 同步客户端 |
29 | 6 |
|
30 | 7 | 同步客户端是最传统的一种方式,也是最容易上手的,整个过程都是阻塞的。 |
31 | 8 |
|
32 | 9 | ```php |
33 | | -use FastD\Swoole\Client\Sync\SyncClient; |
| 10 | +use FastD\Swoole\Client; |
34 | 11 |
|
35 | 12 |
|
36 | | -$client = new SyncClient('tcp://127.0.0.1:9527'); |
| 13 | +$client = new Client('tcp://127.0.0.1:9527'); |
37 | 14 |
|
38 | | -$client |
39 | | - ->connect(function ($client) { |
40 | | - $client->send('hello world'); |
41 | | - }) |
42 | | - ->receive(function ($client, $data) { |
43 | | - echo $data . PHP_EOL; |
44 | | - $client->close(); |
45 | | - }) |
46 | | - ->resolve() |
47 | | -; |
| 15 | +$client->send(); |
48 | 16 | ``` |
49 | 17 |
|
50 | 18 | ### 异步客户端 |
51 | 19 |
|
52 | 20 | 不管是同步还是异步客户端,每个方法都是一个回调,统一客户端的写法,避免造成多种操作方式的,造成混淆。 |
53 | 21 |
|
54 | | -值得注意的是,异步客户端需要对每个操作进行回调处理。 |
55 | | - |
56 | | -```php |
57 | | -use FastD\Swoole\Client\Async\AsyncClient; |
58 | | - |
59 | | - |
60 | | -$client = new AsyncClient('tcp://127.0.0.1:9527'); |
61 | | - |
62 | | -$client |
63 | | - ->connect(function ($client) { |
64 | | - $client->send('hello world'); |
65 | | - }) |
66 | | - ->receive(function ($client, $data) { |
67 | | - echo $data . PHP_EOL; |
68 | | - }) |
69 | | - ->error(function ($client) { |
70 | | - print_r($client); |
71 | | - }) |
72 | | - ->close(function ($client) {}) |
73 | | - ->resolve() |
74 | | -; |
75 | | -``` |
76 | | - |
77 | | -### Socket 客户端 |
78 | | - |
79 | | -Socket 客户端是基于 PHP 内部的 sockets 扩展实现,因此使用该客户端前先要确保 sockets 扩展已经正常安装。 |
| 22 | +值得注意的是,异步客户端需要对 `connect`, `receive`, `error`, `close` 进行重写,并且通过 start 进行启动客户端 |
80 | 23 |
|
81 | 24 | ```php |
82 | | -use FastD\Swoole\Client\Socket; |
| 25 | +use FastD\Swoole\Client; |
83 | 26 |
|
84 | 27 |
|
85 | | -$socket = new Socket('tcp://127.0.0.1:9527'); |
| 28 | +$client = new Client('tcp://127.0.0.1:9527'); |
86 | 29 |
|
87 | | -$socket->connect(function (Socket $socket) { |
88 | | - $socket->send('hello world'); |
89 | | -})->receive(function ($data) { |
90 | | - echo ($data) . PHP_EOL; |
91 | | -})->resolve(); |
| 30 | +$client->start(); |
92 | 31 | ``` |
93 | 32 |
|
94 | 33 | 下一节: [进程](2-3-process.md) |
0 commit comments