banner

Swoole中的TCP、UDP、HTTP以及Websocket

Swoole中的TCP、UDP、HTTP以及Websocket无评论 作者: 日期:2024-03-28 浏览量:55

众所周知,swoole是一款非常优秀的高性能网络通信引擎。它不局限于传统的web开发领域,它还擅长在物联网、微服务、实时通信、UDP服务器等发挥着重要作用。swoole由国人开发,这一点毋庸置疑是值的骄傲的。php在传统web开发的地位每况愈下的今天,无疑又杀出了一条通向高性能的血路来。

本文将逐一介绍一下swoole的几款服务器代码,其中包含TCP、UDP、HTTP以及Websocket服务器,代码将在下文中提及,首先是TCP服务器:


//创建Server对象,监听 127.0.0.1:9501 端口。
$server = new Swoole\Server('127.0.0.1', 9501);
//监听连接进入事件。
$server->on('Connect', function ($server, $fd) {
    echo "Client: Connect.\n";
});
//监听数据接收事件。
$server->on('Receive', function ($server, $fd, $reactor_id, $data) {
    $server->send($fd, "Server: {$data}");
});
//监听连接关闭事件。
$server->on('Close', function ($server, $fd) {
    echo "Client: Close.\n";
});
//启动服务器
$server->start();

其次是UDP服务器代码如下:


$server = new Swoole\Server('127.0.0.1', 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);
//监听数据接收事件。
$server->on('Packet', function ($server, $data, $clientInfo) {
    var_dump($clientInfo);
    $server->sendto($clientInfo['address'], $clientInfo['port'], "Server:{$data}");
});
//启动服务器
$server->start();

再次是HTTP服务器代码如下:

$http = new Swoole\Http\Server('0.0.0.0', 9501);

$http->on('Request', function ($request, $response) {
    $response->header('Content-Type', 'text/html; charset=utf-8');
    $response->end('<h1>Hello Swoole. #' . rand(1000, 9999) . '</h1>');
});

$http->start();

最后是Websocket服务器代码如下:


//创建WebSocket Server对象,监听0.0.0.0:9502端口。
$ws = new Swoole\WebSocket\Server('0.0.0.0', 9502);
//监听WebSocket连接打开事件。
$ws->on('Open', function ($ws, $request) {
    $ws->push($request->fd, "hello, welcome\n");
});
//监听WebSocket消息事件。
$ws->on('Message', function ($ws, $frame) {
    echo "Message: {$frame->data}\n";
    $ws->push($frame->fd, "server: {$frame->data}");
});
//监听WebSocket连接关闭事件。
$ws->on('Close', function ($ws, $fd) {
    echo "client-{$fd} is closed\n";
});
$ws->start();

swoole作为高性能的网络通信引擎,其代表性在功能开发中不言而喻。希望swoole在高性能这一块,能给php带来更多更加积极的影响吧。

声明:

本站的内容多数为原创,部分来自互联网,如若本站作者内容侵犯了您合法权益,可联系我们进行处理!

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
滚动至顶部