swoole如何同时启动多个协议多个端口?
网友回复
Server可以监听多个端口,每个端口都可以设置不同的协议处理方式,例如80端口处理http协议,9507端口处理TCP协议。SSL/TLS传输加密也可以只对特定的端口启用。
!> 例如主服务器是WebSocket或Http协议,新监听的TCP端口(listen的返回值,即Swoole\Server\Port,以下简称port)默认会继承主Server的协议设置。必须单独调用port对象的set方法和On方法设置新的协议才会启用新协议 ,port对象的set和on方法,使用方法与基类Swoole\Server完全一致。如下:监听新端口
//返回port对象
$port1 = $server->listen("127.0.0.1", 9501, SWOOLE_SOCK_TCP);
$port2 = $server->listen("127.0.0.1", 9502, SWOOLE_SOCK_UDP);$port3 = $server->listen("127.0.0.1", 9503, SWOOLE_SOCK_TCP | SWOOLE_SSL);
设置网络协议//port对象的调用set方法
$port1->set([ 'open_length_check' => true, 'package_length_type' => 'N', 'package_length_offset' => 0, 'package_max_length' => 800000, ]); $port3->set([ 'open_eof_split' => true, 'package_eof' => "\r\n", 'ssl_cert_file' => 'ssl.cert', 'ssl_key_file' => 'ssl.key',]);
设置回调函数
//设置每个port的回调函数
$port1->on('connect', function ($serv, $fd){ echo "Client:Connect.\n"; }); $port1->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, 'Swoole: '.$data); $serv->close($fd); }); $port1->on('close', function ($serv, $fd) { echo "Client: Close.\n"; }); $port2->on('packet', function ($serv, $data, $addr) { var_dump($data, $addr); }); Http/WebSocket Swoole\Http\Server和Swoole\WebSocket\Server因为是使用继承子类实现的,无法通过调用Swoole\Server实例的listen来方法创建Http或者WebSocket服务器。如果服务器的主要功能为RPC,但...点击查看剩余70%
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?