从零开始搭建聊天系统之如何开启ws与wss协议

没有看搭建websocket的请移步从零搭建聊天系统之Lumen+GatewayWorker
下面请看继承了Command类的SocketServer的代码

argument('action');
        $argv[0]='worker:socket';
        $argv[1]=$action;
        $argv[2]=$this->option('d')?'-d':'';

//        $context = array(
//            'ssl' => array(
//                'local_cert'  => '/home/wwwroot/im.caomei520.com/ssl/im.caomei520.com.crt', // 或者crt文件
//                'local_pk'    => '/home/wwwroot/im.caomei520.com/ssl/im.caomei520.com.key',
//                'verify_peer' => false
//            )
//        );
//        $Gateway = new Gateway('websocket://0.0.0.0:9006',$context);
//        $Gateway->transport = 'ssl';

        $Gateway = new Gateway('websocket://0.0.0.0:8082');

        new Register('text://0.0.0.0:1238');
        $Gateway->name = 'Gateway';
        $Gateway->count = 1;
        $Gateway->lanIp = '127.0.0.1';
        $Gateway->startPort = 10000;
        $Gateway->pingInterval = 10;  //10s一次心跳
        $Gateway->registerAddress = '127.0.0.1:1238';
        $Gateway->pingNotResponseLimit = 3;
        $Gateway->pingData = '';
        $worker = new BusinessWorker();
        $worker->eventHandler = 'App\Http\Controllers\WebSocket\WebSocketController';
        $worker->name = 'BusinessWorker';
        $worker->count = 3;
        $worker->registerAddress = '127.0.0.1:1238';
        Gateway::runAll();
    }
}

那么ws和wss有什么区别,wss即在ws协议上做了一层加密,在代码中我们可以看到

//        $context = array(
//            'ssl' => array(
//                'local_cert'  => '/home/wwwroot/im.caomei520.com/ssl/im.caomei520.com.crt,', // 或者crt文件
//                'local_pk'    => '/home/wwwroot/im.caomei520.com/ssl/im.caomei520.com.key',
//                'verify_peer' => false
//            )
//        );
//        $Gateway = new Gateway('websocket://0.0.0.0:9006',$context);
//        $Gateway->transport = 'ssl';

在local_cert中就是你申请证书的公钥,local_pk即为你的私钥
我们在实例化Gateway中传入$context参数并开启ssl

$gateway->transport = 'ssl';

如果不需要走wss协议直接实例化Gateway不用传递$context,那么默认就是ws协议

你可能感兴趣的:(从零开始搭建聊天系统之如何开启ws与wss协议)