美文网首页让前端飞前后端知识交流分享
聊聊PHP+webSocket业务处理方案,学到就是你的。

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

作者: 茶艺瑶 | 来源:发表于2019-11-04 19:33 被阅读0次

    首先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>
    

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

    相关文章

      网友评论

        本文标题:聊聊PHP+webSocket业务处理方案,学到就是你的。

        本文链接:https://www.haomeiwen.com/subject/bfadbctx.html