监听端口

Swoole-1.8.0新增了对 多端口混合协议的支持。 Server 可以监听多个端口,每个端口都可以设置不同的协议处理方式(set)和回调函数(on)。 SSL/TLS传输加密也可以只对特定的端口启用。

监听新端口

$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", 9502, 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',
);
            

设置回调函数

$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_serverswoole_websocket_server因为是使用继承子类实现的,无法使用 listen创建 Http/WebSocket服务器。如果服务器的主要功能为 RPC,但希望提供一个简单的Web管理界面。

在这样的场景中,可以先创建Http/WebSocket服务器,然后再进行 listen监听 RPC服务器的端口。