Swoole 多协议 多端口 的应用

栏目: PHP · 发布时间: 5年前

内容简介:这是关于 Swoole 学习的第五篇文章:Swoole 多协议 多端口 的应用。主要参考官方的这两篇文章,进行实现的 Demo。希望通过我提供的 Demo,能够对文档有更加深刻的理解。

第 81 篇文章

这是关于 Swoole 学习的第五篇文章:Swoole 多协议 多端口 的应用。

概述

主要参考官方的这两篇文章,进行实现的 Demo。

  • 网络通信协议设计:

    https://wiki.swoole.com/wiki/page/484.html

  • 多端口监听的使用:

    https://wiki.swoole.com/wiki/page/161.html

希望通过我提供的 Demo,能够对文档有更加深刻的理解。

网络通信协议设计

为什么需要通信协议?

官方:TCP协议在底层机制上解决了UDP协议的顺序和丢包重传问题。但相比UDP又带来了新的问题,TCP协议是流式的,数据包没有边界。应用程序使用TCP通信就会面临这些难题。因为TCP通信是流式的,在接收1个大数据包时,可能会被拆分成多个数据包发送。多次Send底层也可能会合并成一次进行发送。这里就需要2个操作来解决:分包 和 合包,所以TCP网络通信时需要设定通信协议。

Swoole 支持了2种类型的自定义网络通信协议 :EOF结束符协议、固定包头+包体协议。

EOF结束符协议

Swoole 多协议 多端口 的应用

先看下,未设置协议的效果:

Swoole 多协议 多端口 的应用

发送的每条数据长度都是 23,但在 onReceive 接收数据的时候每次接收的长度不一样,并没有按照想象的方式进行分包。

再看下,设置了EOF结束符协议的效果:

Swoole 多协议 多端口 的应用

发送的每条数据长度都是 23,在 onReceive 接收数据的时候每次接收的也是 23 ,完美。

主要设置项如下:

不做解释,官方文档已经写的很清楚。

示例代码如下:

server.php

client.php

固定包头+包体协议

Swoole 多协议 多端口 的应用

先看下,未设置协议的效果:

Swoole 多协议 多端口 的应用

很明显,在 onReceive 接收到的数据,是少的。

再看下,设置协议的效果:

Swoole 多协议 多端口 的应用

主要设置项如下:

不做解释,官方文档已经写的很清楚。

示例代码如下:

server.php

client.php

多端口监听的使用

Swoole 多协议 多端口 的应用

上图,是示例代码中的端口监听:

  • 9501 onMessage 处理 WebSocket。

  • 9501 onRequest 处理 HTTP。

  • 9502 onReceive 处理 TCP。

  • 9503 onPacket 处理 UDP。

不多说,看下效果图:

Swoole 多协议 多端口 的应用

示例代码如下:

server.php

4 个客户端连接的代码分别是:

1、9501 onMessage 处理 WebSocket。可以参考原来文章 Swoole WebSocket 的应用 中的代码即可。

2、9501 onRequest 处理 HTTP。可以参考原来文章Swoole HTTP 的应用 中的代码即可。

3、9502 onReceive 处理 TCP。可以参考原来文章Swoole Task 的应用 中的代码即可。

4、9503 onPacket 处理 UDP。

示例代码:

小结

一、多端口的应用场景是什么?

比如,开发一个直播网站,直播用一个端口,IM聊天用一个端口。

比如,开发一个RPC服务,数据通讯用一个端口,统计界面用一个端口。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML5

HTML5

Matthew David / Focal Press / 2010-07-29 / USD 39.95

Implement the powerful new multimedia and interactive capabilities offered by HTML5, including style control tools, illustration tools, video, audio, and rich media solutions. Understand how HTML5 is ......一起来看看 《HTML5》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码