swoole客户端分析与讲解(作为TCP链接,webscoket链接等客户端)
夜雨闻铃 -swoole客户端文章目录1.swoole客户端能解决什么样的问题?2.如何使用?3.注意事项1.首先明确swoole客户端能帮助我们解决什么样的问题?
业务场景当业务中需要链接TCP,UDP,socket,websocket 服务时,我们需要编写一个客户端去链接对应的服务(比如链接某些数据源)。
此时有很多种的选择,workerman的AsyncTcpConnection,或者使用php自带的socket函数(socket_create,socket_read等函数),swoole的客户端(Swoole\Client)等都可以。各有优劣,选择适合自己和业务的就好,这次我们选择Swoole\Client。
2.如何使用?
废话不多说,直接上我封装好的代码,看不懂多看注释理解,可以收藏方便以后可以直接使用。
class SwooleClient
{
//链接对象
private $client;
/**
* SwooleClient constructor.
*/
public function __construct()
{
$this->client = new Swoole\Client(SWOOLE_SOCK_TCP);
$this->client->set(array(
'open_eof_check' => true, //打开EOF检测
'package_eof' => "\r\n", //设置EOF,包之间的分隔符
'package_max_length' => 1024 * 1024 * 2,//设置一个包的最大数据包尺寸,单位为字节。默认2m
));
}
/**
* Notes: 链接对应的ip
* User: 闻铃
* DateTime: 2021/11/17 下午10:46
* @param string $ip 链接的ip,本地或外网ip
* @param int $port 端口号
* @throws \Exception
*/
public function connect($ip = '127.0.0.1', $port = 9501)
{
if (!$this->client->connect($ip, $port, -1)) {
throw new \Exception(sprintf('Swoole Error: %s', $this->client->errCode));
}
}
/**
* Notes: 发送数据
* User: 闻铃
* DateTime: 2021/11/17 下午10:44
* @param $data 发送的数据
* @return mixed
* @throws \Exception
*/
public function send($data)
{
if ($this->client->isConnected()) {
if (!is_string($data)) {
$data = json_encode($data);
}
return $this->client->send($data);
} else {
throw new \Exception('Swoole Server does not connected.');
}
}
/**
* Notes: 关闭链接
* User: 闻铃
* DateTime: 2021/11/17 下午10:45
*/
public function close()
{
$this->client->close();
}
/**
* Notes: 接收数据
* User: 闻铃
* DateTime: 2021/11/17 下午10:45
* @return array
*/
public function recv()
{
//接受数据
return $this->client->recv();
}
}
如果想要作为webscoket客户端的话,也是可以的,可以使用官方的websocket包(saber)
后续更新
3.注意事项
。。。后续更新
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。
php介绍
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。