Workerman:PHP的socket框架
hi,我们今天来讲讲Workerman
什么是Workerman呢? 看看官网上的详情
Workerman是一款开源高性能异步PHP socket框架。支持高并发,超高稳固性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自己设置协议。拥有异步Mysql、异步Redis、异步Http、MQTT物联网用户端、异步消息队列等众多高性能组件
入门知识
先来点枯燥但又好玩的知识点
1. 什么是HTTP
- HTTP是一种不保存状态的协议
- HTTP是媒体独立的:这意味着,只需用户端和服务器知道如何解决的数据内容,任何类型的数据都可以通过HTTP发送。用户端以及服务器指定使用适合的MIME-type内容类型
- HTTP是无连接:无连接的含义是限制每次连接只解决一个请求
下面以我自己的了解哔哔几句
说白了HTTP就是:用TCP 创造一个服务
有用户端连接就发送HTTP头部、响应等等数据
那个用户端就是客户的浏览器
由于是协议 所以跨平台 只需读完HTTP协议的基础 即可以实现浏览器和WEB服务器(相当麻烦
需要考虑n个东西 )
2. TCP具体流程
- 初始化
- 创立文件形容符
- 将当前的文件形容符和 IP/PORT绑定在一起;假如这个端口已经被其余进程占用,bind失败。
- 公告当前这个文件形容符作为一服务器的文件形容符,为后面的accept做准备
- 调用accept,并阻塞等待用户端连接
- 三次握手
- 数据传输过程
- 建立连接后,全双工
- 服务器从accept返回后,立刻调用read(),读socket就像读管道一样,假如没有数据就阻塞等待
- 这时用户端调用write()发送请求给服务器,对用户端得请求进行解决,在此期间用户端调用read()阻塞等待服务器的应答
- 服务器调用write(),发送应答数据,再调用read()进行阻塞等待,这时用户端read()返回,发送下一条请求。
上述上述过程是可循环执行的。
- 四次挥手
首先 我们来下载一下Workerman
我们使用composer官网下期会出这个教程
我们来写个简单的Web Socket聊天室吧
<?phpuse Workerman\Worker;require_once __DIR__ . '/vendor/autoload.php';// 新建WebSocket协议 端口是2000$ws_worker = new Worker("websocket://0.0.0.0:2000");// 启动4个进程对外提供服务$ws_worker->count = 4;// 当收到用户端发来的数据后返回给所有用户端$ws_worker->onMessage = function($connection, $data) use($ws_worker){ // 遍历当前进程所有的用户端连接,发送用户端的数据 foreach($ws_worker->connections as $connection) { $connection->send($data); }};// 运行workerWorker::runAll();
启动php 文件名 start
OK出现了以后 表示我们的服务启动了
而后新建一个html文件输入
<script>ws = new WebSocket("ws://127.0.0.1:2000");ws.onopen = function() { alert("连接成功"); ws.send('tom'); alert("给服务端发送一个字符串:tom");};ws.onmessage = function(e) { alert("收到服务端的消息:" + e.data);}</script>
双击打开
恭喜恭喜 你成功了!
下次详细的讲解Workerman各个方法和函数
求赞 蟹蟹
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Workerman:PHP的socket框架
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Workerman:PHP的socket框架