Swoole-1.8.0新增了对多端口混合协议的支持。Server可以监听多个端口,每个端口都可以设置不同的协议处理方式(set)和回调函数(on)。SSL/TLS传输加密也可以只对特定的端口启用。(推荐学习:swoole视频教程)
未调用set方法,设置协议处理选项的监听端口,默认继承主服务器的设置
未调用on方法,设置回调函数的监听端口,默认使用主服务器的回调函数
监听端口返回的对象类型为swoole_server_port
监听端口的swoole_server_port对象,可以调用set和on方法,使用方法与swoole_server完全一致
监听端口只能设置少量特定的选项,只能设置数据收发的相关事件回调函数
不同监听端口的回调函数,仍然是相同的Worker进程空间内执行
主服务器是WebSocket或Http协议,新监听的TCP端口默认会继承主Server的协议设置。必须单独调用set方法设置新的协议才会启用新协议
监听新端口
$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);
设置网络协议
$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',] );
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!