php function curl token_workerman实现PHP实时消息推送,getwayworker满足你的项目需求

24c6f17646f0e5fbd2edaa4adc3d8a27.gif

为了带领大家深入学习workerman以及getwayworker,让大家迅速在自己项目中使用workerman,使用Websocket协议,实现长连接,摆脱长轮询,详细完整的讲解如何利用workerman开发即时通讯,并且部署到自己的项目里以及运行在Linux系统里面。 不管你的项目是基于ThinkPHP还是laravel或者yii,甚至微擎,不管你是pc端应用还是移动端应用,都可以在自己的项目里面完整的实现通讯模块。 首先了解一下通讯协议:

TCP/IPTCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议UDP包括DNS、TFTP等协议

短连接连接->传输数据->关闭连接HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。 长连接连接->传输数据->保持连接 -> 传输数据-> 。。。->关闭连接。长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。http的长连接HTTP也可以建立长连接的,使用Connection:keep-alive,HTTP 1.1默认进行持久连接。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。 什么时候用长连接,短连接?长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。 而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。workerman是啥?Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。开始步入正题:为了达到实时通讯,很多时候我们采用了ajax轮询机制,后面可以采用workerman方式来实现,项目也是tp写的,官方手册这么说到与其它mvc框架结合建议以上图的方式(ThinkPHP为例):1、ThinkPHP与Workerman是两个独立的系统,独立部署(可部署在不同服务器),互不干扰。2、ThinkPHP以HTTP协议提供网页页面在浏览器渲染展示。3、ThinkPHP提供的页面的js发起websocket连接,连接workerman4、连接后给Workerman发送一个数据包(包含用户名密码或者某种token串)用于验证websocket连接属于哪个用户。5、仅在ThinkPHP需要向浏览器推送数据时,才调用workerman的socket接口推送数据。6、其余请求还是按照原本ThinkPHP的HTTP方式调用处理。总结:把Workerman作为一个可以向浏览器推送的通道,仅仅在需要向浏览器推送数据时才调用Workerman接口完成推送。业务逻辑全部在ThinkPHP中完成。ok,到这里,把workerman容器跑起来,注意这里是CLI模式运行0c5670df4b67ca7461b6a1b79189affd.png然后再我们项目接收信息中这么写,附上代码

<script>

接着,我们在用户向用户发送信息的时候添加

// 指明给谁推送,为空表示向所有在线用户推送

其中,workerman里面的推送核心代码实现

// 全局数组保存uid在线数据

47032395ea79c4c651c8450050106fcf.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值