首先要使用compor来下载一个第三方扩展就可以实现php的websocket客户端,直接在当前目录生成下compor.json文件就可以了
compor require textalk/websocket
require('vendor/autoload.php');u websocket\client;$client = new client("ws://echo.websocket.org/");$client->nd("hello websocket.org!");echo $柏姿client->receive();教师寄语高中
配合php的读取文件操作,只读取最新的追加的内容,下面代码为读取日志的客户端 , 发送给10.xx.2.xx:9501
#!/usr/bien的意思n/env php <?phprequire('vendor/autoload.php');u websocket\client;if(2 != count($argv)){ fwrite( stderr, "调用格式错误!使用格式 ./xxx filename".php_eol ); return 1;}$file_name = $argv[1];define("max_show", 8192);$file_size = 0;$file_size_new = 0;$add_size = 0;$ignore_size = 0;$fp = fopen($file_name, "r");$client = new client("ws://10.xx.2.xx:9501/");while(1){ clearstatcache(); $file_size_new = filesize($file_name); $add_size = $file_size_new - $file_size; if($add_size > 0){ if($add_size > max_show){ $ignore_size = $add_size - max_show; $add_size = max_show; fek($fp, $file_size + $ignore_size); } //直接输出内容 // fwrite( // stdout, // fread($fp, $add_size) // ); $client->nd(fread($fp, $add_size)); $file_size = $file_size_new; } usleep(50000);}fclo($fp);
服务端的代码使用swoole作为服务端,并且在收到消息后给所有的连接广播,执行服务端
<?php$rver = new swoole\websocket\rver("0.0.0.0", 9501);$rver->on('open', function (swoole\websocket\rver $rver, $request)u($fds) { echo "rver: handshake success with fd{$request->fd}\n";}类似盲探的电影);$rver->on('message', function (swoole\websocke一般过去时的构成t\rver $rver, $frame)u($fds) { echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n"; foreach($rver->connections as $fd){ $rver->push($fd, $frame->data); }});$rver->on('clo', function ($r, $fd) { echo "client {$fd} clod\n";});$rver->start();
执行客户端
可以在浏览器直接实时输出
本文发布于:2023-04-08 02:34:59,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/961cf1bda3126c1ca52b3bee2741cf20.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:[PHP] php作为websocket的客户端实时读取推送日志文件.doc
本文 PDF 下载地址:[PHP] php作为websocket的客户端实时读取推送日志文件.pdf
留言与评论(共有 0 条评论) |