PHP基于libevent的webSocket连接实例

该博客介绍了如何在PHP5.6环境下利用libevent库创建WebSocket连接的实例,包括libevent的socket管理类和具体的运行过程。
摘要由CSDN通过智能技术生成

由于libevent不支持php7,本demo采用的php版本是:php5.6.30
上文讲解php7基于event的socket的demo,本文讲解的是libevent的socket实例。
libevent管理类

/**
 * 基于libevent的webSocket连接,不支持php7
 */
class MyLibEvent
{
   
    protected $eventBase;
    protected $allEvents = [];

    public function __construct()
    {
   
        if (!extension_loaded('libevent')) {
            echo 'libevent extension is require' . PHP_EOL;
            exit(250);
        }
        $this->eventBase = event_base_new();
    }

    public function add($fd, $flag, $func, $args = array())
    {
   
        $fd_key = (int)$fd;
        $event = event_new();
        if (!event_set($event, $fd, $flag | EV_PERSIST, $func, null)) {
            return false;
        }
        if (!event_base_set($event, $this->eventBase)) {
            return false;
        }
        if (!event_add($event)) {
            return false;
        }

        $this->allEvents[$fd_key][$flag] = $event;
        return true;
    }

    public function del($fd, $flag)
    {
   
        $fd_key = (int)$fd;
        if (isset($this->allEvents[$fd_key][$flag])) {
            event_del($this->allEvents[$fd_key][$flag]);
            unset($this->allEvents[$fd_key][$flag]);
        }
        if (empty($this->allEvents[$fd_key])) {
            unset($this->allEvents[$fd_key]);
        }
    }

    public function loop()
    {
   
        event_base_loop($this->eventBase);
    }
}

socket管理类

class Socket
{
   
    const READ_BUFFER_SIZE = 65535;
    protected $mainSocket;
    protected 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值