Workerman学习

Workerman是一款开源高性能异步PHP socket即时通讯框架。下面通过一些简单的例子来学习。

1. 使用HTTP协议对外提供Web服务

创建http_test.php文件,内容如下:

  1. <?php
  2. use Workerman\Worker;
  3. require_once __DIR__.'/Workerman/Autoloader.php';
  4. //创建一个Worker监听2345端口,使用http协议
  5. $httpWorker = new Worker('http://0.0.0.0:2345');
  6. //启动4个进程对外提供服务
  7. $httpWorker->count = 4;
  8. //接收到浏览器发送的数据时回复hello world给浏览器
  9. $httpWorker->onMessage = function($connection,$data){
  10. //向浏览器发送hello world
  11. $connection->send('hello world');
  12. };
  13. //运行worker
  14. Worker::runAll();

命令行进入http_test.php目录,并执行以下命令:

  1. php http_test.php

浏览器中输入http://127.0.0.1:2345 页面会显示hello world

2. 使用WebSocket协议对外提供服务

创建ws_test.php文件,内容如下:

  1. <?php
  2. use Workerman\Worker;
  3. require_once __DIR__.'/Workerman/Autoloader.php';
  4. //创建一个Worker监听2345端口,使用websocket协议
  5. $httpWorker = new Worker('websocket://0.0.0.0:2000');
  6. //启动4个进程对外提供服务
  7. $httpWorker->count = 4;
  8. //接收到浏览器发送的数据时回复hello world给浏览器
  9. $httpWorker->onMessage = function($connection,$data){
  10. //向浏览器发送hello $data
  11. $connection->send('hello '.$data);
  12. };
  13. //运行worker
  14. Worker::runAll();

命令行进入ws_test.php目录,并执行以下命令:

  1. php ws_test.php

新建ws_test.html文件,内容如下:

  1. <script>
  2. ws = new WebSocket("ws://127.0.0.1:2000");
  3. ws.onopen = function() {
  4. alert("连接成功");
  5. ws.send('tom');
  6. alert("给服务端发送一个字符串:tom");
  7. };
  8. ws.onmessage = function(e) {
  9. alert("收到服务端的消息:" + e.data);
  10. };
  11. </script>

双击打开ws_test.php,页面将弹出窗口提示连接成功,并继续弹出收到的服务端的消息。

3. 直接使用TCP传输数据

创建tcp_test.php,内容如下:

  1. <?php
  2. use Workerman\Worker;
  3. require_once __DIR__.'/Workerman/Autoloader.php';
  4. //创建一个Worker监听3000端口,使用tco协议
  5. $httpWorker = new Worker('tcp://0.0.0.0:3000');
  6. //启动4个进程对外提供服务
  7. $httpWorker->count = 4;
  8. //接收到浏览器发送的数据时回复hello world给浏览器
  9. $httpWorker->onMessage = function($connection,$data){
  10. //向浏览器发送hello $data
  11. $connection->send('hello '.$data);
  12. error_log($data."\r\n",3,'1.txt');
  13. };
  14. //运行worker
  15. Worker::runAll();

命令行进入tcp_test.php目录,并执行以下命令:

  1. php tcp_test.php

打开cmd命令,输入telnet 127.0.0.1 3000
每敲击一个字符,即可收到返回信息。如果希望发送完整的字符串信息,则先按快捷键:Ctrl+],进入命令行模式,然后输入send+字符串:send 字符串,按回车即可。
打开文件同目录下的1.txt可以看到发送的内容。

发表评论

邮箱地址不会被公开。 必填项已用*标注

发表评论前,请滑动滚动条解锁
三十岁