<?phpclassSwooleWebSocket{private$webSocket;private$redis;publicfunction__construct(){$this->webSocket=newSwoole\WebSocket\Server("0.0.0.0",9500);$this->webSocket->set(["worker_num"=>2,"dispatch_mode"=>2,"deamonize"=>false,'enable_coroutine'=>false,]);$this->redis=newRedis();$this->redis->connect('192.168.1.91',6379);$this->webSocket->on("start",[$this,"onStart"]);$this->webSocket->on("managerStart",[$this,"onManagerStart"]);$this->webSocket->on("workerStart",[$this,"onWorkerStart"]);$this->webSocket->on("open",[$this,"onOpen"]);$this->webSocket->on("message",[$this,"onMessage"]);$this->webSocket->on("request",[$this,"onRequest"]);$this->webSocket->start();}publicfunctiononStart(){}publicfunctiononManagerStart(){}publicfunctiononWorkerStart(Swoole\WebSocket\Server$server,$request){echo"Worker start \n";sleep(10);
Swoole\Process::signal(SIGCHLD,function($signal){while($ret= Swoole\Process::wait(false)){echo"PID: $ret finished \n";}});}// public function onTick(){// }publicfunctiononOpen(Swoole\WebSocket\Server$server,$request){echo"webSocket on open \n";$cookie=$request->cookie;if(isset($cookie["user_id"])){$this->redis->hSet("OneToOne","${cookie["user_id"]}",$request->fd);}}publicfunctiononMessage(Swoole\WebSocket\Server$server,$frame){$data=$frame->data;$data=json_decode($data,true);var_dump($data);$receive_fd=$this->redis->hGet("OneToOne",$data["receive_userid"]);$this->webSocket->push($receive_fd,$data["content"]);}publicfunctiononRequest($request,$response){}}newSwooleWebSocket();