Я делаю приложение в Laravel 5.2, которое использует websockets. Для подключения к websocket я использую HoaServer , который работает очень хорошо.
Плохая часть, я не знаю, как сделать этот сервер контроллером или, по крайней мере, иметь доступ к моим моделям, прямо сейчас я использую разделенное PDO-соединение для создания запросов БД.
Кто-то знает, можно ли сделать этот сервер в качестве контроллера или, по крайней мере, иметь доступ к базе данных через larvel-модели?
Мой сервер прямо сейчас:
require_once(__DIR__.'/../vendor/autoload.php'); $PDO = new PDO('mysql:host=127.0.0.1:3306;dbname=DBNAME', "USER", "PASS"); $websocket = new Hoa\Websocket\Server(new Hoa\Socket\Server('ws://'.$ip.':'.$porta)); $websocket->on('open', function (Hoa\Event\Bucket $bucket) { return; }); $websocket->on('message', function (Hoa\Event\Bucket $bucket) { return; }); $websocket->on('close', function (Hoa\Event\Bucket $bucket) { return; }); $websocket->run();
Самое близкое, что я увлекаюсь , должен был запустить событие laravel , которое я не знаю, как это сделать. : /
//Socket server message event $server->on('message', function() { //Fire your Laravel Event here });
Я думаю, что вам нужно создать консольную команду.
php artisan make:console StartSocketServer --command=socket:start
а затем вы редактируете сгенерированный класс следующим образом
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class StartSocketServer extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'socket:start'; /** * The console command description. * * @var string */ protected $description = 'start the socket server'; /** * Create a new command instance. */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { $websocket = new Hoa\Websocket\Server(new Hoa\Socket\Server('ws://'.$ip.':'.$porta)); $websocket->on('open', function (Hoa\Event\Bucket $bucket) { return; }); $websocket->on('message', function (Hoa\Event\Bucket $bucket) { return; }); $websocket->on('close', function (Hoa\Event\Bucket $bucket) { return; }); $websocket->run(); } }
Наконец, после регистрации команды в App\Console\Kernel
вы можете запустить php artisan socket:start
с вашего терминала.
Я никогда не использовал HoaServer, но я думаю, что это должно сработать.