聊聊PHP+webSocket业务处理方案,学到就是你的。

首先Socket这个方案都很多种,webSocket也是其中的一种通信方案。在以前的PHP总,做这一项的事情是非常痛苦。虽然现在有了好多选择,比如Swoole还有Workerman等,可是一堆回调你能忍?由于Socket很多PHP框架都不太成熟,可是websocket这个协议到时帮了php不少问题。

我现在属于的团队前后端各站一半,在技术选型上也纠结了一点时间。我到底是选择Socket.io的php版本还是直接Socket.io的node.js版本。

指导Omi的作者说出了,腾讯文档是用 Socket.io这话,我突然回想起,网易云音乐、金十数据、imgur等运营的技术都是Socket.io,至于为什么这样,PHP做什么事情最擅长?答案无疑:WEB开发,创业公司的急救包。
让很多企业前期可以实现大吉大利,年终吃鸡的美梦。那么web的数据传输过程中,json是标配,那么是处理json最拿手?无疑是JavaScript。所以node.js的Socket.io无疑是最好的选择。

图中网易云使用的0.9.16的版本,已经能运行这么多年了,可见性能强悍,而且有成熟的分布式组件方案,可以横向扩展,性能不是瓶颈问题。

image.png

我先聊聊,项目业务之间是如何处理。
这是最简单和最理想的一种情况。

image.png

但是我们后端代码是php,api数据接口层也是php。用的是laravel。laravel和socket.io是两个程序,而且现在的php的websocket客户端只要Swoole享用。

那么我们要怎么处理呢??这里我们需要用到是laravel的异步消息队列和爬虫原理。

这时候我们PHP这边的处理方式是以下方式。

image.png

我们会在php制作一个页面来做渲染,在异步队列用把消息通过爬虫的原理把ws激活。页面内容如下。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

</body>
</html>
<script src="{{asset('/static/lib/socket/socket.io.js')}}"></script>
<script>
    var socket = io('{{env('WEB_SOCKET_URL')}}');

    socket.emit('{{$event}}',{!! $data !!});

</script>

为什么做异步,而不是同步呢?因为异步跑得是另一条线程,用户可以做其他事情,别人收到消息,回你做说吧,你平时和别人聊天的时候,也不会一直静静看着聊天框吧?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 并发IO问题一直是服务器端编程中的技术难题,从最早的同步阻塞直接Fork进程,到Worker进程池/线程池,到现在...
    零一间阅读 1,805评论 1 34
  • 出处:韩天峰 网址:rango.swoole.com/archives/508 并发IO问题一直是后端编程中的技术...
    meng_philip123阅读 2,478评论 1 38
  • PHP常用socket创建TCP连接,使用CURL创建HTTP连接,为了简化操作,Swoole提供了Client类...
    JunChow520阅读 3,987评论 0 3
  • 在不用缓存、集群之类东东只情况下,PHP框架哪家强?我指的是高并发高负载,并且适合做大型项目的。 高负载不是一个语...
    IM魂影阅读 2,043评论 3 2
  • swoole 安装用的是centOSphp安装目录:/usr/local/php php.ini配置文件路径:/u...
    a十二_4765阅读 12,093评论 3 9

友情链接更多精彩内容