【资料图】
laravel+websocket是即时通讯开发必备利器,那么Laravel中怎么接入workerman?下面本篇文章给大家介绍一下laravel快速接入websocket的方法,希望对大家有所帮助。一、安装gateway-worker
composer require workerman/gateway-worker -vvv
登录后复制
二、创建Workerman启动文件
通过下列命令,在App\Console\Commands下创建命令行文件,并将下方代码复制到文件中。【相关推荐:《workerman教程》】
php artisan make:command WorkermanCommand
登录后复制
argument("action"); $argv[0] = "wk"; $argv[1] = $action; $argv[2] = $this->option("d") ? "-d" : ""; // -d守护模式,不会因为关闭系统命令页面而被杀掉进程。 没有-d则关闭命令页面直接退出进程 $this->start(); } private function start() { $this->startGateWay(); $this->startBusinessWorker(); $this->startRegister(); Worker::runAll(); } private function startBusinessWorker() { $worker = new BusinessWorker(); $worker->name = "BusinessWorker"; $worker->count = 1; $worker->registerAddress = "127.0.0.1:1236"; $worker->eventHandler = \App\Events::class; //用作监听事件的文件 } private function startGateWay() {//因为小程序等一些平台,要求使用wss进行socket,所以,这里需要配置下wss//此处的cert.pem和key.key是域名的证书文件 $content = array( "ssl" => array( "local_cert" => public_path("cert.pem"), "local_pk" => public_path("key.key"), "verify_peer" => false ) ); $gateway = new Gateway("websocket://0.0.0.0:2346", $content); //如果不需要wss,则不用加入content这个参数 $gateway->transport = "ssl";//不需要wss,也不用加入这个参数。 $gateway->name = "Gateway"; $gateway->count = 1; $gateway->lanIp = "127.0.0.1"; $gateway->startPort = 2300; $gateway->pingInterval = 30; $gateway->pingNotResponseLimit = 0; $data = array( "type" => "heart" ); $gateway->pingData = json_encode($data, true); $gateway->registerAddress = "127.0.0.1:1236"; } private function startRegister() { new Register("text://0.0.0.0:1236"); }}
登录后复制
三、创建监听事件
创建一个app/Events.php文件来监听处理Workman的各种事件
登录后复制
四、启动workerman
在命令行里面执行,支持的命令有 start | stop | restart,后续加 -d 的意思是守护模式【daemon】
php artisan workman start -d
登录后复制
五、踩坑关键点
1、在LINUX环境中使用。
2、有可能会启动失败,此时,请检查php中,是否禁用了pcntl开头的相关方法。在 php配置文件中查找到disable_functions,将所有pcntl开头的方法全部删除。
六、GatewayWorker手册
gateway-worker手册
更多编程相关知识,请访问:编程教学!!
以上就是聊聊Laravel中怎么接入workerman的详细内容,更多请关注php中文网其它相关文章!