SwooleTalk

<?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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值