\swoole_client

class swoole_client

Summary

Methods
Properties
Constants
__construct()
set()
setConnectTimeout()
setSendTimeout()
connect()
recv()
send()
sendfile()
sendto()
sleep()
wakeup()
isConnected()
getsockname()
getpeername()
close()
on()
getSocket()
$errCode
$sock
$setting
MSG_OOB
MSG_PEEK
MSG_DONTWAIT
MSG_WAITALL
No protected methods found
No protected properties found
N/A
No private methods found
No private properties found
N/A

Constants

MSG_OOB

MSG_OOB

读取带外数据

MSG_PEEK

MSG_PEEK

recv 方法的第二个参数,窥视socket缓存区中的数据。 设置MSG_PEEK参数后,recv读取数据不会修改指针,因此下一次调用recv仍然会从上一次的位置起返回数据。

MSG_DONTWAIT

MSG_DONTWAIT

recv 方法的第二个参数,非阻塞接收数据,无论是否有数据都会立即返回

MSG_WAITALL

MSG_WAITALL

recv 方法的第二个参数,阻塞等待直到收到指定长度的数据后返回。

Properties

$errCode

$errCode : integer

错误码,当 connect/send/recv/close 失败时,会自动设置 $swoole_client->errCode 的值。 errCode 的值等于 Linux errno,可使用 socket_strerror 将错误码转为错误信息。

Type

integer — 错误码

$sock

$sock : integer

表示此 socket 连接的文件描述符

Type

integer — socket 连接的描述符

$setting

$setting : array

客户端设置的选项,具体见 set() 接口

Type

array

Methods

__construct()

__construct(integer  $sock_type, integer  $is_sync = SWOOLE_SOCK_SYNC, string  $key = null) 

__construct swoole_client 构造函数

Parameters

integer $sock_type

socket 类型,支持 TCP/UDP、TCP6/UDP6、UinxSock Stream/Dgram 6种

 SWOOLE_SOCK_TCP/SWOOLE_TCP
 SWOOLE_SOCK_UDP/SWOOLE_UDP
 SWOOLE_SOCK_TCP6/SWOOLE_TCP6
 SWOOLE_SOCK_UDP6/SWOOLE_UDP6
 SWOOLE_SOCK_UNIX_STREAM/SWOOLE_SOCK_UNIX_STREAM
 SWOOLE_SOCK_UNIX_DGRAM/SWOOLE_UNIX_DGRAM
 使用 $sock_type|SWOOLE_SSL可以启用SSL加密,SSL 加密算法相关常量参考全局常量部分
integer $is_sync

表示同步阻塞还是异步非阻塞,默认为同步阻塞

string $key

$key用于长连接的Key,默认使用IP:PORT作为key。相同key的连接会被复用

set()

set(array  $settings) : boolean

set 设置客户端参数,必须在connect前执行。

Parameters

array $settings

数组,设置

client 端可以使用 set 方法设置一些选项,启用某些特性:
结束符检测:
 open_eof_check
 package_eof
 package_max_length

长度检测:
 open_length_check
 package_length_type
 package_length_offset
 package_body_offset
 package_max_length

Socket 缓冲区尺寸:
 socket_buffer_size

关闭Nagle合并算法:
 open_tcp_nodelay

SSL/TLS证书:
 ssl_cert_file
 ssl_key_file

绑定IP和端口:
 bind_address
 bind_port

Socks5代理设置:
 socks5_host
 socks5_port
 socks5_username
 socks5_password

Returns

boolean —

成功返回 true

setConnectTimeout()

setConnectTimeout(integer  $timeout) : boolean

setConnectTimeout 设置连接超时时间,可重复设置,以最后一次设置为准

Parameters

integer $timeout

超时时间,单位ms,设置为0时,不超时

Returns

boolean —

设置成功返回true,设置失败返回false

setSendTimeout()

setSendTimeout(integer  $timeout) : boolean

setSendTimeout 设置消息发送超时时间,可重复设置,以最后一次设置为准,仅对sendWithCallback接口有效

Parameters

integer $timeout

超时时间,单位ms,设置为0时,不超时

Returns

boolean —

设置成功返回true,设置失败返回false

connect()

connect(string  $host, integer  $port, integer  $flag) : boolean

connect 连接到远程服务端,与setConnectTimeout结合使用,可支持连接超时

Parameters

string $host

远程服务的地址

说明:
    使用异步swoole_client时,host不能为域名,必须为ip
integer $port

远程服务的端口

integer $flag

[optional] 可选字段,默认为 0

     $flag 字段使用说明:
     UDP client:$flag = 1, 启用 udp connect,将绑定 $host 和 $port,数据发送使用send接口;
                 $flag = 0, 数据发送使用sendto
     TCP client:$flag = 1, 表示设置为非阻塞 socket;
                 $flag = 0, 使用阻塞socket,但是在异步模式下,$flag = 0无效。

Returns

boolean —

调用成功返回true,调用失败false

recv()

recv(integer  $size = 65535, integer  $flags) : string|false

recv 从服务端接收数据

Parameters

integer $size

接收数据的缓冲区最大长度

integer $flags

可以设置一些特殊的 SOCKET 接收设置 $client->recv(8192, swoole_client::MSG_PEEK | swoole_client::MSG_WAITALL);

Returns

string|false —

成功收到数据返回接收到的字符串,连接关闭返回空字符串,失败返回 false,并设置 $swoole_client->errCode 属性

send()

send(string  $data, integer  $flag) : integer|false

send 发送数据到服务端,必须在建立连接之后调用,支持已经连接的client 发送数据

Parameters

string $data

要发送到服务端的数据

integer $flag

具体意义可以参考 php 官方 send 接口中 flag 的定义,只对同步方式下直作用。如下:

Returns

integer|false —

调用成功返回 errno 值,失败返回 false

sendfile()

sendfile(string  $filename) : boolean

sendfile 发送文件到服务端,本函数是基于 sendfile 操作系统调用的。

Parameters

string $filename

要发送的文件路径,如果文件不存在函数返回 false

Returns

boolean —

发送成功返回 true,失败返回 false

sendto()

sendto(string  $ip, integer  $port, string  $data) : boolean

sendto 向任意 IP:PORT 发送 UDP报文,仅支持 SWOOLE_SOCK_UDP/SWOOLE_SOCK_UDP6 类型的 swoole_client 对象。

Parameters

string $ip

目标服务 ip 地址,支持 ipv4/ipv6

integer $port

目标服务端口

string $data

要发送的数据内容,建议不超过 64k

Returns

boolean —

成功返回 true,失败返回 false

sleep()

sleep() : boolean

sleep 此方法会从事件循环中移除当前 socket 的可读监听,停止接收数据。 此方法仅停止从 socket 中接收数据,但不会移除可写事件,所以不会影响发送队列 sleep 操作与 wakeup 作用相反,使用 wakeup 方法可以重新监听可读事件

Returns

boolean —

成功返回 true,失败返回 false

wakeup()

wakeup() : boolean

wakeup 调用此方法会重新监听可读事件,将 socket 连接从睡眠中唤醒。 如果socket并未进入sleep模式,wakeup操作没有任何作用

Returns

boolean —

成功返回 true,失败返回 false

isConnected()

isConnected() : boolean

isConnected 返回当前客户端的连接状态

Returns

boolean —

true 表示当前客户端已经连接到服务端,false 表示当前客户端未连接到服务端

getsockname()

getsockname() : array|false

getsockname 用于获取客户端socket的本地host:port,必须在连接之后才可以使用。

Returns

array|false —

成功返回一个数组,形如 Array([port] => 59946,[host] => 127.0.0.1),失败返回false

getpeername()

getpeername() : array|false

getpeername 获取对端 socket 的IP地址和端口,仅支持 SWOOLE_SOCK_UDP/SWOOLE_SOCK_UDP6 类型的 swoole_client 对象。 UDP协议通信客户端向一台服务器发送数据包后,可能并非由此服务器向客户端发送响应。可以使用此方法获取实际响应的服务器IP:PORT。

Returns

array|false —

成功返回一个数组,形如 Array([port] => 0,[host] => 0.0.0.0),失败返回 false

close()

close(boolean  $is_force = false) : boolean

close 关闭连接

Parameters

boolean $is_force

true 表示强制关闭连接,该标记已经废弃

Returns

boolean —

操作成功返回 true,失败返回 false

on()

on(string  $event_name, callable  $callback) : 

注册异步事件回调函数,对异步客户端有效

Parameters

string $event_name

事件名,不区分大小写

"connect" 连接成功事件,对应事件的回调函数原型参考onConnect
          function onConnect(swoole_client $client)
"receive" 收到数据事件,对应事件的回调函数原型参考onReceive
          function onReceive(swoole_client $client, string $data)
"close"   关闭事件,对应事件的回调函数原型参考onClose
          function onClose(swoole_client $client)
"error"   网络错误事件,对应事件的回调函数原型参考onError
          function onError(swoole_client $client)
"timeout" 超时事件,仅异步tcp client 支持该事件,事件回调函数原型参考onTcpTimeout
          注册timeout事件回调,和setConnectTimeout或者setSendTimeout配合使用
          @param swoole_client $client 客户端对象
          @param int $type 超时类型,SWOOLE_ASYNC_CONNECT_TIMEOUT 连接超时;
                              SWOOLE_ASYNC_RECV_TIMEOUT消息接收超时
          function onTcpTimeout(swoole_client $client,int $type)
callable $callback

发生 $event_name 事件时的回调函数

Returns

getSocket()

getSocket() : resource|false

getSocket 返回底层的 socket 句柄,返回的对象为 socket 资源句柄

Returns

resource|false —

成功返回 socket 资源句柄,失败返回 false