2016-07-07 22 views
0

Ich mache eine Anwendung in Laravel 5.2, die Websockets verwendet. Für die Websocketverbindung verwende ich HoaServer, was sehr gut funktioniert.WebSocket mit Laravel 5.2

Der schlechte Teil ist, ich weiß nicht, wie man diesen Server als Controller, oder zumindest Zugang zu meinen Modellen habe, im Moment verwende ich eine separate PDO-Verbindung, um die DB-Querys zu machen.

Jemand weiß, ob es möglich ist, diesen Server als Controller zu machen oder zumindest Zugriff auf die Datenbank über Laravel-Modelle zu haben.

Mein Server jetzt:

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(); 

Das nächstgelegene, dass ich gern ein laravel event Feuer, dass ich weiß nicht, wie. :/

//Socket server message event 
$server->on('message', function() { 
    //Fire your Laravel Event here 
}); 
+0

haben Sie versucht, Konsole zu verwenden? https://laravel.com/docs/5.2/artisan – xmhafiz

+0

Wenn Sie "make: controller" meinen, yep. Ich habe ein System mit Laravel, Controllern, Modellen und View erstellt. Das Problem ist, dass ich nicht weiß, wie man neue Hoa \ Websocket \ Server() in einem Controller funktioniert ^^ " –

+0

Nein, ich meine fügen Sie Ihren Code zu Konsole mit make: console – xmhafiz

Antwort

3

Ich denke, dass Sie einen Konsolenbefehl erstellen sollten.

php artisan make:console StartSocketServer --command=socket:start 

und dann Sie die generierte Klasse wie folgt bearbeiten

<?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(); 
    } 
} 

Endlich, nach dem Befehl in App\Console\Kernel Registrierung Sie php artisan socket:start von Ihrem Terminal laufen kann.

Ich habe nie HoaServer verwendet, aber ich denke, das sollte funktionieren.

+0

mehr auf der Konsole hier https: // laravel .com/docs/5.2/artisan – sleimanx2

+0

Perfekter Mann! Danke! –