Swoole 多协议 多端口 的应用

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

内容简介:这是关于 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服务,数据通讯用一个端口,统计界面用一个端口。


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

查看所有标签

猜你喜欢:

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

从Paxos到Zookeeper

从Paxos到Zookeeper

倪超 / 电子工业出版社 / 2015-2-1 / 75.00元

《Paxos到Zookeeper:分布式一致性原理与实践》从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议。同时,本书深入介绍了分布式一致性问题的工业解决方案——ZooKeeper,并着重向读者展示这一分布式协调框架的使用方法、内部实现及运维技巧,旨在帮助读者全面了解ZooKeeper,并更好地使用和运维Zoo......一起来看看 《从Paxos到Zookeeper》 这本书的介绍吧!

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

URL 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具