PHP 接收 UDP包_php只能做网站?基于swoole+websocket开发双向通信应用
前言
众所周知,PHP用于开发基于HTTP协议的网站应用非常便捷。而HTTP协议是一种单向的通信协议,只能接收客户端的请求,然后响应请求,不能主动向客户端推送信息。因此,一些实时性要求比较高的应用,如实时聊天、直播应用、在线网页游戏等,就不适合采用HTTP协议。即使采用客户端主动轮询的方式来间接实现双向通信,也会较大地增加服务器的负担,增大代码的复杂性,不利于维护。
双向通信
那么,是否PHP就无法用来开发双向通信的应用呢?
答案是否定的。PHP内置socket通信支持,可以与linux程序基于socket进行双向通信。php swoole框架封装了一个websocket服务端,基于此可以很方便地建立一个与html5的websocket客户端进行通信的服务。
一、Swoole介绍
swoole
Swoole是一个面向生产环境的 PHP 异步网络通信引擎,使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升。
swoole支持用于搭建多种server,包括http server、websocket server、tcp server、redis server等等。这里我们使用到的是其中的websocket server。
二、WebSocket介绍
WebSocket
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
简单地来说,websocket协议实现了浏览器和服务器之间的双向通信。而html5原生支持websocket协议。
三、swoole websocket 服务端demo
1.安装swoole
swoole以php扩展的形式进行加载,首先需要为你的php安装swoole扩展,安装命令如下:
pecl install swoole
安装成功后在php.ini文件加上extension=swoole.so加载扩展
2.启动服务端
新建一个php文件,文件名为server.php,文件内容如下:
$server = new SwooleWebSocketServer("0.0.0.0
PHP 接收 UDP包_php只能做网站?基于swoole+websocket开发双向通信应用相关推荐
- PHP 接收 UDP包_PHP早已不是十年前的鸟样!!!
开发者 Brent 发布了一篇文章,详细介绍了 2019 年的 PHP 是怎么样的. Brent 承认 PHP 当前仍然存在一些问题,比如许多核心函数仍然有不一致的方法签名.配置设置还是令人困惑,但是 ...
- mysql for循环_基于Swoole扩展开发异步高性能的MySQL代理服务器
MySQL数据库对每个客户端连接都会分配一个线程,所以连接非常宝贵.开发一个异步的MySQL代理服务器,PHP应用服务器可以长连接到这台Server,既减轻MYSQL的连接压力,又使PHP保持长连接减 ...
- mysql异步扩展_基于Swoole扩展开发异步高性能的MySQL代理服务器
MySQL数据库对每个客户端连接都会分配一个线程,所以连接非常宝贵.开发一个异步的MySQL代理服务器,PHP应用服务器可以长连接到这台Server,既减轻MYSQL的连接压力,又使PHP保持长连接减 ...
- 使用php开发,基于swoole扩展开发的工具 swoole-crontab
2019独角兽企业重金招聘Python工程师标准>>> 使用php开发,基于swoole扩展开发的工具 swoole-crontab https://www.oschina.net/ ...
- PHP 接收 UDP包_UDP详解(广播,组播)(转)
先转载一位大佬对UDP的解说.再测试一下广播和多播 原文:https://www.cnblogs.com/HPAHPA/p/7737531.html 广播多播测试代码 链接: https://pan. ...
- esp8266 接收udp广播_ESP8266_21基于ESP8266的一键配网
这一节,说一下一键配网的用法.首先说为什么需要一键配网? 原因很简单,因为设备要上网.那,给那些设备配一个屏幕和一个输入设备行不行? 不是不可以,对那些成本没要求的设备是没问题的.但物联网设备大部分都 ...
- 如何在Linux命令行下发送和接收UDP数据包
众所周知,在传输层有两个常用的协议 TCP 和 UDP,本文介绍在 Linux 命令行下,如何使用 nc 命令发送或接收 UDP 数据包,这些命令的用法对调试 UDP 通信程序将有所帮助. 1. 问题 ...
- 无连接应用程序丢包率测试/UDP丢包率测试【基于数据报套接字的网络程序设计】
目录 一.无连接应用程序丢包率测试 二.UDP 丢包率测试服务端 三.UDP丢包率测试客户端 四.用户使用说明(输入 / 输出规定) 五.部分运行结果 六.UDP 丢包率的测试结果分析 (1)讨论服务 ...
- 【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
文章目录 I UDP 信息发送接收原理 II UDP 发送和接收端口相同 III UDP 发送信息代码示例 IV UDP 接收信息代码示例 V UDP 服务器端代码示例 VI UDP 客户端代码示例 ...
最新文章
- AI一分钟|Uber撤裁100名无人车操作员;京东金融将融资130亿人民币
- PowerShell收发TCP消息包
- 用 Flask 来写个轻博客 (19) — 以 Bcrypt 密文存储账户信息与实现用户登陆表单
- 【机器学习PAI实践九】如何通过机器学习实现云端实时心脏状况监测
- ACE源代码目录结构
- 一致性协议raft详解(二):安全性
- 房费制 它 结账BUG
- AWT_addKeyListener键盘监听事件(Java)
- 拓端tecdat|R语言分段线性回归分析预测车辆的制动距离
- Consul添加配置详解
- Android Lolipop 屏蔽隐式Intent检查引发的错误
- tensorrt 分割_超多,超快,超强!百度飞桨发布工业级图像分割利器PaddleSeg
- java 开发电商平台,JAVA项目实战开发电商项目案例(一)前后端项目分离
- 前馈反馈仿真matlab,前馈-反馈控制系统的具体分析及其matlab/simulink.pdf
- latex常用中文模板,拿走直接很使用
- [转]短信验证码如何防止不恶意点击被刷!
- ES改变主分片数量,动态拆分primary shard
- Proteus仿真51单片机入门
- 解决 `Failed to connect to github.com port 443: Connection refused`
- 初识二维码 第二讲 二维码的结构
热门文章
- 谈谈“学习”这件事儿
- Dapper介绍--Micro-ORM
- 推荐VSCode多语言开发,支持一键JAVA
- 使用Nexus搭建私有Nuget仓库
- .NET Core 2.0迁移技巧之web.config配置文件
- [翻译]编写高性能 .NET 代码 第一章:性能测试与工具 -- 平均值 vs 百分比
- 【干货】”首个“ .NET Core 验证码组件
- ASP.NET Core 1.0中的管道-中间件模式
- 利用redis List队列简单实现秒杀 PHP代码实现
- 提交Form表单,submit之前做js判断处理