课程表

Swoole基础

Swoole实例

工具箱
速查手册

Swoole 基本实例创建

当前位置:免费教程 » 程序设计 » Swoole

下面贴一个基本的基于swoole的echo服务器

  1. // Server
  2. class Server
  3. {
  4. private $serv;
  5.  
  6. public function __construct() {
  7. $this->serv = new swoole_server("0.0.0.0", 9501);
  8. $this->serv->set(array(
  9. 'worker_num' => 8,
  10. 'daemonize' => false,
  11. 'max_request' => 10000,
  12. 'dispatch_mode' => 2,
  13. 'debug_mode'=> 1
  14. ));
  15.  
  16. $this->serv->on('Start', array($this, 'onStart'));
  17. $this->serv->on('Connect', array($this, 'onConnect'));
  18. $this->serv->on('Receive', array($this, 'onReceive'));
  19. $this->serv->on('Close', array($this, 'onClose'));
  20.  
  21. $this->serv->start();
  22. }
  23.  
  24. public function onStart( $serv ) {
  25. echo "Start\n";
  26. }
  27.  
  28. public function onConnect( $serv, $fd, $from_id ) {
  29. $serv->send( $fd, "Hello {$fd}!" );
  30. }
  31.  
  32. public function onReceive( swoole_server $serv, $fd, $from_id, $data ) {
  33. echo "Get Message From Client {$fd}:{$data}\n";
  34. }
  35.  
  36. public function onClose( $serv, $fd, $from_id ) {
  37. echo "Client {$fd} close connection\n";
  38. }
  39. }
  40. // 启动服务器
  41. $server = new Server();

从代码中可以看出,创建一个swoole_server基本分三步: 1. 通过构造函数创建swoole_server对象 2. 调用set函数设置swoole_server的相关配置选项 3. 调用on函数设置相关回调函数 关于set配置选项以及on回调函数的具体说明,请参考我整理的swoole文档( 配置选项)

这里只给出简单介绍。onStart回调在server运行前被调用,onConnect在有新客户端连接过来时被调用,onReceive函数在有数据发送到server时被调用,onClose在有客户端断开连接时被调用。 这里就可以大概看出如何使用swoole:在onConnect处监听新的连接;在onReceive处接收数据并处理,然后可以调用send函数将处理结果发送出去;在onClose处处理客户端下线的事件。

下面贴出客户端的代码:

  1. <?php
  2. class Client
  3. {
  4. private $client;
  5.  
  6. public function __construct() {
  7. $this->client = new swoole_client(SWOOLE_SOCK_TCP);
  8. }
  9.  
  10. public function connect() {
  11. if( !$this->client->connect("127.0.0.1", 9501 , 1) ) {
  12. echo "Error: {$fp->errMsg}[{$fp->errCode}]\n";
  13. }
  14. $message = $this->client->recv();
  15. echo "Get Message From Server:{$message}\n";
  16.  
  17. fwrite(STDOUT, "请输入消息:");
  18. $msg = trim(fgets(STDIN));
  19. $this->client->send( $msg );
  20. }
  21. }
  22.  
  23. $client = new Client();
  24. $client->connect();
  25. ?>

这里,通过swoole_client创建一个基于TCP的客户端实例,并调用connect函数向指定的IP及端口发起连接请求。随后即可通过recv()和send()两个函数来接收和发送请求。需要注意的是,这里我使用了默认的同步阻塞客户端,因此recv和send操作都会产生网络阻塞。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号