PHP笔记-Workerman整合到Laravel中并创建websocket
Posted IT1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP笔记-Workerman整合到Laravel中并创建websocket相关的知识,希望对你有一定的参考价值。
今天想把websocket搭建起来,查了下原始的Laravel并没有这个功能,发现php中websocket用workerman好像比较多。
在此将他们结合下,但结合时发现了一些问题。此篇博文虽然以及结合起来了,但是在某些情况下,建议还是分开,做成微服务的那种。
如果是使用虚拟机或服务器。业务简单的情况下可以结合起来,不影响。还可以共享很多资源。
如果使用的虚拟空间。就必须要分开了。因为虚拟空间只开了80或443端口,websocket需要另外开个端口,所以这种情况要分开。
如果是要搞中大型的项目,建议分开。
下面来看下整合,先加载库
composer require workerman/workerman
创建控制台命令:
php artisan make:command Workerman
此时会在app/Console/Commands下面新建一个Workerman.php
将代码改成:
<?php
namespace App\\Console\\Commands;
use Illuminate\\Console\\Command;
use Workerman\\Worker;
class Workerman extends Command
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'workerman:websocket';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
parent::__construct();
/**
* Execute the console command.
*
* @return int
*/
public function handle()
$wsWorker = new Worker('websocket://0.0.0.0:2346');
$wsWorker->onConnect = function($connection)
echo "New Connection\\n";
;
$wsWorker->onMessage = function ($connection, $data)
$connection->send('Hello' . $data);
;
$wsWorker->onClose = function ($connection)
echo "Connection closed\\n";
;
Worker::runAll();
这里有几点要注意:
这个$signature要填写,控制台启动workerman时就是
php artisan workerman:websocket
输入后:
启动成功,用网页调试下:
服务端后台打印:
以上是关于PHP笔记-Workerman整合到Laravel中并创建websocket的主要内容,如果未能解决你的问题,请参考以下文章
thinkphp3.2整合workerman 多入口模式(windows)
安装composer,tp5.0和Workerman整合实现websocket通信demo