Swoole学习笔记(五):多协议多端口

swoole中,接受数据流处理时,需要将数据流切分成小包才能进行功能的实现,以下为常见的几个协议

1.EOF协议
EOF协议是用一组固定的,不会出现在数据内的字符作为数据分割的标记,简称EOF协议
EOF协议的格式如下:


DATA    |   EOF     |   DATA    |   EOF     |   ......

2.固定包头协议
在数据部首加上一组固定格式的数据作为协议头,称为固定包体协议
协议头的格式必须固定,其中需要标明后续数据的长度
长度字段格式只支持"S,L,N,V"和"s,l,n,v"


        header |     length       |     header  |     data      |

固定长度 | 数据长度 | 数据头部 | 数据内容 |


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

函数原型:
swoole_server_port swoole_server->(string $host, int $port, int type)
其中,$type字段支持一下6种格式:
SWOOLE_TCP / SWOOLE_SOCK_TCP ipv4 TCP协议
SWOOLE_TCP6 / SWOOLE_SOCK_TCP6 ipv6 TCP协议
SWOOLE_UDP / SWOOLE_SOCK_UDP ipv4 UDP协议
SWOOLE_UDP6 / SWOOLE_SOCK_UDP6 ipv6 UDP协议
SWOOLE_UNIX_DGRAM UnixSocket 数据包格式
SWOOLE_UNIX_STREAM UnixSocket 数据流格式

注意,新创建的端口需要设置协议参数,否则会复用swoole_server的协议解析方式

监听端口的swoole_server_port对象,可以调用set和on方法:
未调用set方法,设置协议处理选项的监听端口,默认继承主服务器的设置
未调用on方法,设置回调函数的监听端口,默认使用主服务器的回调函数

不同监听端口的回调函数,仍然是相同的Worker进程空间内执行

上一篇:swoole中使用task进程异步的处理耗时任务


下一篇:PhpStorm 增加Swoole智能提示