workerman开发基本流程以一个简单的Websocket聊天室服务端为例。
1、选择任意位置建立项目目录 如 SimpleChat/ 进入目录执行 composer require workerman/workerman
2、入口引入vendor/autoload.php (composer安装后生成) 创建 start.php ,引入vendor/autoload.php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
3、选定协议 这里我们选定Text文本协议(WorkerMan中自定义的一个协议,格式为文本+换行)
(目前WorkerMan支持HTTP、Websocket、Text文本协议,如果需要使用其它协议,请参照协议一章开发自己的协议)
4、根据需要写入口启动脚本 例如下面这个是一个简单的聊天室的入口文件。
SimpleChat/start.php
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$global_uid = 0;
function handle_connection($connection)
{
global $text_worker, $global_uid;
$connection->uid = ++$global_uid;
}
function handle_message(TcpConnection $connection, $data)
{
global $text_worker;
foreach($text_worker->connections as $conn)
{
$conn->send("user[{$connection->uid}] said: $data");
}
}
function handle_close($connection)
{
global $text_worker;
foreach($text_worker->connections as $conn)
{
$conn->send("user[{$connection->uid}] logout");
}
}
$text_worker = new Worker("text://0.0.0.0:2347");
$text_worker->count = 1;
$text_worker->onConnect = 'handle_connection';
$text_worker->onMessage = 'handle_message';
$text_worker->onClose = 'handle_close';
Worker::runAll();
5、测试 Text协议可以用telnet命令测试
telnet 127.0.0.1 2347
|