请大神指教phpsocketio开启ssl Exception: class \Protocols\Https not exist报错了?

ziven

worker 版本为3.5.19
phpsocketio 版本^1.1
报错内容:
Exception: class \Protocols\Https not exist in E:\apps\company_dining_hall\vendo
r\workerman\workerman\Worker.php:2191

4330 3 0
3个回答

keytehu

你代码写错了

blogdaren

【https = http + ssl 】
 
错误姿势:$worker = new Worker("https://ip:port");
正确姿势:$worker = new Worker("http://ip:port");
$worker->transport = 'ssl';

  • ziven 2019-08-29

    我直接用的是phpsocketio,源码是
    if($port)
    {
    $worker = new Worker('SocketIO://0.0.0.0:'.$port, $opts);
    $worker->name = 'PHPSocketIO';

            if(isset($opts['ssl'])) {
                $worker->transport = 'ssl';
            }
    
            $this->attach($worker);
        }

    有传了$port了,也有传了ssl的参数了

  • blogdaren 2019-08-29

    use PHPSocketIO\SocketIO;
    $context = array(
    'ssl' => array(
    'local_cert' => '/your/path/your/server.pem',
    'local_pk' => '/your/path/your/server.key',
    'verify_peer' => false,
    )
    );
    new SocketIO(2120, $context);

  • ziven 2019-08-29

    是的,
    // 传入ssl选项,包含证书的路径
    $context = array(
    'ssl' => array(
    'local_cert' => 'xxxxx',
    'local_pk' => 'xxxxx',
    'verify_peer' => false,
    )
    );

        //PHPSocketIo服务
        self::$senderIo = new SocketIO(3120,$context);

    我是这么写的,但是启动服务的时候看见了启动端口后,就直接报Exception: class \Protocols\Https not exist这个错误了

  • blogdaren 2019-08-29

    手册上有写明注意事项,自己确认下:
    SSL 要求workerman>=3.3.7
    phpsocket.io>=1.1.1

  • ziven 2019-08-29

    我用的是laravel,使用composer安装的,worker的是3.5.19的,composer.json 里的是"workerman/phpsocket.io": "^1.1",应该是满足的,也是按官方的配置的,就莫名出现了这个问题了,然后找了一下,好像phpsocket.io这个包里面好像没有https这个类

  • blogdaren 2019-08-29

    没有https类是正常的,因为 https = http + ssl ; 你确定你代码中某个地方没有发起类似这样的调用吗? 如 new Worker("https://ip:port");

  • ziven 2019-08-29

    可以了,启动的时候没有用https,但是监听的时候用了https,非常感谢你

sssllin

截图 非常感谢

  • 暂无评论
年代过于久远,无法发表回答
🔝