• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

使用swoolewebsocket实现执行consolephp文件把输出返回给浏览器

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 1 swoole websocket 服务端
 2 <?php
 3 $server = new swoole_websocket_server("0.0.0.0", 9501);
 4 
 5 $server->on('open', function (swoole_websocket_server $server, $request) {
 6         echo "server: handshake success with fd{$request->fd}\n";
 7 });
 8 
 9 $server->on('message', function (swoole_websocket_server $server, $frame) {
10         #echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
11         if ($frame->data == 1) {
12                 $handle = popen('php ./console.php', 'r');
13              while (!feof($handle)) { $content = fgets($handle);
14                         $server->push($frame->fd, $content);                        
15                 }
16                 pclose($handle);
17         }
18 });
19 
20 $server->on('close', function ($ser, $fd) {
21         echo "client {$fd} closed\n";
22 });
23 
24 $server->start();
 1 console.php脚本
 2 <?php
 3 
 4 echo '12'.PHP_EOL;
 5 echo '34'.PHP_EOL;
 6 
 7 sleep(10);
 8 echo '56'.PHP_EOL;
 9 echo '78'.PHP_EOL;
10 sleep(10);
11 echo 'exit';
 1 前端脚本
 2 <!DOCTYPE html>
 3 <html lang="en">
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8     <title>Document</title>
 9 </head>
10 <body>
11     测试swoole websocket
12     <button type="button" class="btn btn-large btn-block btn-default" >点我</button>
13     <div >
14 
15     </div>
16     <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
17     <script>
18         const socket = new WebSocket('ws://www.swoole-test.com:9501');
19 
20         // Connection opened
21         socket.addEventListener('open', function (event) {
22             socket.send('Hello Server!');
23         });
24 
25         // Listen for messages
26         socket.addEventListener('message', function (event) {
27             var data = event.data;
28             console.log(data);
29         });
30 
31         $("#btn").on('click', function() {
32             socket.send(1);
33         });
34     </script>
35 </body>
36 </html>

执行swoole脚本 打开浏览器控制台 观察效果


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP插件技术-插件钩子(hooks)分析发布时间:2022-07-10
下一篇:
PHP调用系统命令超时发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap