<?php
class SwooleWebSocket{
private $webSocket;
private $redis;
public function __construct(){
$this->webSocket = new Swoole\WebSocket\Server("0.0.0.0", 9500);
$this->webSocket->set([
"worker_num" => 2,
"dispatch_mode" => 2,
"deamonize" => false,
'enable_coroutine' => false,
]);
$this->redis = new Redis();
$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();
}
public function onStart(){
}
public function onManagerStart(){
}
public function onWorkerStart(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(){
// }
public function onOpen(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);
}
}
public function onMessage(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"]);
}
public function onRequest($request, $response){
}
}
new SwooleWebSocket();
SwooleTalk
最新推荐文章于 2021-01-29 10:38:20 发布

808

被折叠的 条评论
为什么被折叠?



