第7节、Swoole长连接异步服务端

8 篇文章 0 订阅
8 篇文章 3 订阅

1、构建server对象

$server = new Swoole\Server("0.0.0.0", 9800);

这里的IP地址设置为 0.0.0.0 ,允许任何客户端的请求,但是端口规定是9800(端口也是自定义的,但必须填写,不是某个协议规定的端口)

2、基础设置

$server->set([
    'worker_num'=>1,
    'open_length_check'=>1,
    'package_length_type'=>'N',
    'package_length_offset'=>0,
    'package_body_offset'=>4,
    'package_max_length'=>1024*1024*2
]);

这里和上一节的客户端差不多。
0、worker_num work进程数
1、open_length_check 开启长度检测
2、package_length_type 设置包头的长度
3、package_length_offset 包头长度从哪儿开始计算
4、package_body_offset 包体从第几个字节开始计算
5、package_max_length 包体的最大长度

3、基本常用的事件调用

0、连接事件
$server->on('connect', function ($server, $fd) {
    echo '新的连接'.$fd.PHP_EOL;
});
1、接收事件
$server->on('receive', function (swoole_server $server, int $fd, int $reactor_id, string $data) {
    $msg = unpack('N', $data);
    var_dump(substr($data, 4));

    $server->send($fd,$data);
    $server->send($fd,$data);
});

在接收事件中,开始进行数据的解包,并打印(var_dump)得到包体;
然后进行服务端向客户端发送数据,这里在上一节的客户端的接收事件的回调函数里面,也进行了打印。

2、关闭事件
$server->on('close', function () {
    echo '关闭'.PHP_EOL;
});
3、开始启动服务端
$server->start();

4、结合上一节,操作一下基本的效果

完整的异步长连接的客户端、服务端就可以了。

0、开启客户端

在这里插入图片描述

1、开启客户端(这里我这里用的是最新版本的swoole,会有版本中的warring提示,这是没有大问题的)

在这里插入图片描述
客户端一运行便看到这些提示,基本情况就是最新版本有一些更新的问题。这里稍后在做具体说明,今天就关注这个异步长连接的效果

再来看一下服务端的情况:
在这里插入图片描述
第一个:就是服务端的连接事件的回调中打印的,证明客户端连接上了这个服务端;
第二个:就是服务端的接收事件的回调中打印的,证明接受到了客户端发过来的数据;
第三个:这里就是心跳检测,证明长连接的状态了。

接下来:

就可以明白,客户端已开启的时候打印的字符串 ’rommer‘,是哪里来的了?这是服务端的接收事件中,我们用了一行向客户端发送数据的代码:

$server->send($fd,$data);

这样就完整了。

5、友情提示:这里用的xShell 工具进行的模拟操作。

都是在我的服务器上运行的。

如果你没有购买服务器,你可以在网上学习一下,用虚拟机的桥接模式,结合这个xShell,来做这样的学习操作。我就不赘述了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨埃LUO定

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值