• swoole消息推送


    socket.php

    // 注释的部分是学习的笔记

    <?php
    //创建websocket服务器对象,监听0.0.0.0:9502端口
    $ws = new swoole_websocket_server("0.0.0.0", 9501);
    
    //监听WebSocket连接打开事件
    /**
     * 客户端想服务器发送信息是调用函数
     * $ws   websocket 服务器
     * $request 客户端信息
     * $request->fd 客户端唯一编号
     *
     * */
    $ws->on('open', function ($ws, $request) {
        //var_dump($request->fd, $request->get, $request->server);
        //$ws->push($request->fd, "hello, welcome
    ");
        echo "connection open:{$request->fd}
    ";
        //$ws->push($request->fd, json_encode(['hello','world']));
    });
    
    //监听WebSocket消息事件
    /**
     * $frame 客户端发送的信息
     * $frame->fd 客户端的唯一编号
     * $frame->data 客户端发送的信息
     * */
    $ws->on('message', function ($ws, $frame) {
        //echo "接收到的信息: {$frame->data}
    ";
        //$ws->push($frame->fd, "server: {$frame->data}");
        //echo "服务器已接收:【".$frame->fd."】";
        //$ws->push($frame->fd, json_encode(['hello','world'.$frame->data]));
    
    
        // 1.客户端发送过来的信息
        $content = $frame->data;
        echo "服务器接收到信息:".$content;
        // 2.讲消息发送个所有客户端
        foreach ($ws->connections as $fd){
            $ws->push($fd,$content);
        }
    });
    
    //监听WebSocket连接关闭事件
    $ws->on('close', function ($ws, $fd) {
        echo "client-{$fd} is closed
    ";
        echo "已断开链接:{$fd}";
    });
    
    $ws->start();

    客户端显示数据:socket.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>客户端显示数据</title>
        <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js" ></script>
    </head>
    <body>
    <ul id="show">
    
    </ul>
    </body>
    <script>
    
        $(function(){
            //1.创建websocket客户端
            var wsServer = 'ws://192.168.70.167:9501';
            var websocket = new WebSocket(wsServer);
    
            //2.注册事件
                //2.1 当客户端和服务器简历连接时执行该函数
                websocket.onopen = function(){
                    //console.log("连接上了服务器");
                    addStr("连接上了服务器")
                }
                //2.2 当服务器想客户端发送消息时 执行该函数
                // event.data 就是服务器发送过来的信息
                websocket.onmessage = function(event){
                    console.log("接收到服务器发送的信息:"+event.data);
                    addStr(event.data);
    
                }
                // 2.3 当客户端和服务器断开连接时执行函数
                websocket.onclose = function(event){
                    console.log("断开了链接");
                }
    
        });
    
        /*websocket.onopen = function(){
            //console.log("连接上了服务器");
            websocket.send("连接上了服务器")
        }*/
        function addStr(str){
            $str = "<li>"+str+"</li>";
            $("#show").append($str);
        }
    </script>
    </html>

    客户端发送数据:socket_add.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>客户端显示数据</title>
        <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js" ></script>
    </head>
    <body>
    <ul id="show">
    
    </ul>
    </body>
    <script>
    
        $(function(){
            //1.创建websocket客户端
            var wsServer = 'ws://192.168.70.167:9501';
            var websocket = new WebSocket(wsServer);
    
            //2.注册事件
                //2.1 当客户端和服务器简历连接时执行该函数
                websocket.onopen = function(){
                    //console.log("连接上了服务器");
                    addStr("连接上了服务器")
                }
                //2.2 当服务器想客户端发送消息时 执行该函数
                // event.data 就是服务器发送过来的信息
                websocket.onmessage = function(event){
                    console.log("接收到服务器发送的信息:"+event.data);
                    addStr(event.data);
    
                }
                // 2.3 当客户端和服务器断开连接时执行函数
                websocket.onclose = function(event){
                    console.log("断开了链接");
                }
    
        });
    
        /*websocket.onopen = function(){
            //console.log("连接上了服务器");
            websocket.send("连接上了服务器")
        }*/
        function addStr(str){
            $str = "<li>"+str+"</li>";
            $("#show").append($str);
        }
    </script>
    </html>

    运行服务端 

    php socket.php

    运行客户端

    客户端显示数据:192.168.70.168:9501/socket.html (可以打开多个窗口,查看数据)

    客户端发送数据:192.168.70.168:9501/socket_add.html

  • 相关阅读:
    背景透明,文字不透明
    判断数组类型
    前端工作流程自动化——Grunt/Gulp 自动化
    tools安装
    总结
    CSS Hack
    getBoundingClientRect()兼容性处理
    Math.random获得随机数
    spring RestTemplate 工程导入
    系统架构演变
  • 原文地址:https://www.cnblogs.com/wesky/p/9449647.html
Copyright © 2020-2023  润新知