workerman怎么判断连接状态 
                            
                                                    
                        
                    
                    
  
                    
                    1. 运行环境
windows 10,php 7.3,workerman 4.1,laravel 8
2. 问题描述?
需要做一个实时更新的报价盘,前端用websockt连接服务器,连接成功后每秒给前端发送最新的数据,但是服务器是windows,在laravel中用workerman的Timer类报错pcntl_alarm()未被定义,然后考虑用while sleep循环,但是在postman测试时发现连接断开,循环还在不停推送,不知道怎么实时检测连接是否断开,然后停掉循环,是哪里用法不对嘛,新手菜鸡,希望大佬指点一下。
Command
<?php
namespace App\Console\Commands;
use GuzzleHttp\Client;
use Illuminate\Console\Command;
use Workerman\Connection\TcpConnection;
use Workerman\Worker;
class websocket extends Command
{
    protected $signature = 'websocket';
    protected $description = 'websocket';
    public function __construct()
    {
        parent::__construct();
    }
    public function handle()
    {
        $ws_worker = new Worker("websocket://0.0.0.0:8080");
        $ws_worker->name = 'WebsocketWorker';
        $ws_worker->onMessage = function(TcpConnection $connection, $data){
            while (true) {
               if ($connection->getStatus()!==TcpConnection::STATUS_ESTABLISHED){
                    break;
                }
                $data = $this->GetGoldPrictOne();
                if ($data) {
                    $connection->send(json_encode($data));
                }
                sleep(1);
            }
        };
        $ws_worker->onConnect = function(TcpConnection $connection) {
            $connection->send('Welcome to the WebSocket server!');
        };
        $ws_worker->onClose = function(TcpConnection $connection) {
            echo "Connection closed\n";
        };
        Worker::runAll();
        $this->info('WebSocket server started successfully.');
    } 
           
         
                     
                     
             
             
             
             
             
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: