# ports.php 配置服务器端口信息,这是一个非常重要的配置 ```php use Server\CoreBase\PortManager; $config['ports'][] = [ 'socket_type' => PortManager::SOCK_TCP, 'socket_name' => '0.0.0.0', 'socket_port' => 9091, 'pack_tool' => 'LenJsonPack', 'route_tool' => 'NormalRoute', ]; $config['ports'][] = [ 'socket_type' => PortManager::SOCK_TCP, 'socket_name' => '0.0.0.0', 'socket_port' => 9092, 'pack_tool' => 'EofJsonPack', 'route_tool' => 'NormalRoute', ]; $config['ports'][] = [ 'socket_type' => PortManager::SOCK_HTTP, 'socket_name' => '0.0.0.0', 'socket_port' => 8081, 'route_tool' => 'NormalRoute', 'method_prefix' => 'http_' ]; $config['ports'][] = [ 'socket_type' => PortManager::SOCK_WS, 'socket_name' => '0.0.0.0', 'socket_port' => 8083, 'route_tool' => 'NormalRoute', 'pack_tool' => 'NonJsonPack', 'opcode' => PortManager::WEBSOCKET_OPCODE_TEXT ]; return $config; ``` 通过此设置可以配置开启多个端口,每个端口可以配置不同的封装器和路由器。 其中http不需要封装器可以不填写。 可以通过命名回调函数来为每个端口提供不同的回调。 可以配置的字段名为: ``` -----------HTTP------------ request handshake ------------WS------------- open message close handshake ---------TCP/UDP-------- connect receive close packet ``` 还有些特殊的配置 * method_prefix 设置该端口访问的方法名前缀 * event_controller_name 设置该端口conect,close触发的控制器名称,不填默认使用Appserver设置的 * close_method_name 设置该端口close触发的方法,不填默认使用Appserver设置的 * connect_method_name 设置该端口conect触发的方法,不填默认使用Appserver设置的 >如果仅仅使用http协议可以直接使用下面的配置 >$config['ports'][] = [ 'socket_type' => PortManager::SOCK_HTTP, 'socket_name' => '0.0.0.0', //0.0.0.0表示运行所有的ip访问 'socket_port' => 8081, //开启的端口为8081 'route_tool' => 'NormalRoute', //框架默认的路由就是NormalRoute 'method_prefix' => 'http_' //控制器访问的前缀为'http_ ]; ## 关于前缀 框架为了隔离访问添加了访问方法前缀 比如8081端口设置了HTTP服务,method_prefix设置了前缀为http_。 通过NormalRoute作为默认路由的情况下,我们访问localost:8081/Testcontroller/test将访问到TestController控制器的http_test方法。